Закрытие окна при нажатии в любое место за его определами - Java
Формулировка задачи:
Добрый день, помогите советом. Есть кнопка которая открывает окно, типа меню, но не меню, на то есть причины. Мне нужно сделать так, чтобы оно закрывалось как JPopupMenu у JMenu при нажатии куда-либо за его пределами, у меня есть идея я координатами, но нужно отлавливать абсолютно все щелчки мыши, даже за пределами моего окна, получать их координаты и сравнивать с координатами, которые занимает это моё типа меню, если не совпадают делаем его невидимым совпадает оставляем как есть, но не знаю как отлавливать абсолютно все щелчки мыши которые происходят при работе с компьютером. Буду рад почитать и ваши предложение по поводу решения данной проблемы)
Решение задачи: «Закрытие окна при нажатии в любое место за его определами»
textual
Листинг программы
import javax.swing.*; import java.awt.*; import java.awt.event.WindowEvent; import java.awt.event.WindowFocusListener; public class MainFrame extends JFrame { MainFrame() { setSize(new Dimension(500, 500)); setLocationRelativeTo(null); setLayout(null); Win win = new Win(); JButton openWin = new JButton("open new Win"); openWin.setSize(150, 30); openWin.setLocation(300, 20); openWin.addActionListener(e -> win.open()); add(openWin); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new MainFrame(); } } class Win extends JFrame { Win() { setSize(new Dimension(300, 100)); setLocationRelativeTo(null); setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); setLayout(null); JButton button = new JButton("button"); button.setSize(100, 50); button.setLocation(0, 0); add(button); addWindowFocusListener(new WindowFocusListener() { @Override public void windowGainedFocus(WindowEvent e) { } @Override public void windowLostFocus(WindowEvent e) { setVisible(false); } }); } void open() { setVisible(true); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д