Закрытие окна при нажатии в любое место за его определами - 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);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д