Закрытие окна при нажатии в любое место за его определами - Java

Узнай цену своей работы

Формулировка задачи:

Добрый день, помогите советом. Есть кнопка которая открывает окно, типа меню, но не меню, на то есть причины. Мне нужно сделать так, чтобы оно закрывалось как JPopupMenu у JMenu при нажатии куда-либо за его пределами, у меня есть идея я координатами, но нужно отлавливать абсолютно все щелчки мыши, даже за пределами моего окна, получать их координаты и сравнивать с координатами, которые занимает это моё типа меню, если не совпадают делаем его невидимым совпадает оставляем как есть, но не знаю как отлавливать абсолютно все щелчки мыши которые происходят при работе с компьютером. Буду рад почитать и ваши предложение по поводу решения данной проблемы)

Решение задачи: «Закрытие окна при нажатии в любое место за его определами»

textual
Листинг программы
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.WindowEvent;
  4. import java.awt.event.WindowFocusListener;
  5.  
  6.  
  7. public class MainFrame extends JFrame {
  8.  
  9.     MainFrame() {
  10.         setSize(new Dimension(500, 500));
  11.         setLocationRelativeTo(null);
  12.         setLayout(null);
  13.  
  14.         Win win = new Win();
  15.  
  16.         JButton openWin = new JButton("open new Win");
  17.         openWin.setSize(150, 30);
  18.         openWin.setLocation(300, 20);
  19.         openWin.addActionListener(e -> win.open());
  20.         add(openWin);
  21.  
  22.         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  23.         setVisible(true);
  24.     }
  25.  
  26.     public static void main(String[] args) {
  27.         new MainFrame();
  28.     }
  29.  
  30. }
  31.  
  32. class Win extends JFrame {
  33.  
  34.     Win() {
  35.         setSize(new Dimension(300, 100));
  36.         setLocationRelativeTo(null);
  37.         setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
  38.  
  39.         setLayout(null);
  40.         JButton button = new JButton("button");
  41.         button.setSize(100, 50);
  42.         button.setLocation(0, 0);
  43.         add(button);
  44.  
  45.         addWindowFocusListener(new WindowFocusListener() {
  46.             @Override
  47.             public void windowGainedFocus(WindowEvent e) {
  48.  
  49.             }
  50.  
  51.             @Override
  52.             public void windowLostFocus(WindowEvent e) {
  53.                 setVisible(false);
  54.             }
  55.         });
  56.     }
  57.  
  58.     void open() {
  59.         setVisible(true);
  60.     }
  61.  
  62. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы