Скрыть всплывающее окно при нажатии на заголовок JFrame

У меня есть JFrame и JTextField.

Я создаю всплывающее окно на основе JWindow, оно показывает, когда textField имеет недопустимое значение.

Я хочу скрыть свое всплывающее окно, когда основной JFrame перемещается или когда я нажимаю заголовок JFrame.


person Alexandr    schedule 31.01.2012    source источник


Ответы (1)


Добавьте WindowFocusListener к JWindow и setVisible(false), когда окно потеряет фокус. Что-то вроде этого:

  popup.addWindowFocusListener(new WindowAdapter() {

    public void windowLostFocus(WindowEvent e) {
         if (popup.isVisible()){
             popup.setVisible(false);
         }
      }
  });

Или, если это не то, что вам нужно, вы можете добавить ComponentListener к JFrame:

  frame.addComponentListener(new ComponentAdapter(){

     public void componentMoved(ComponentEvent e) {
         if (popup.isVisible()){
             popup.setVisible(false);
         }
      }
  });
person rtheunissen    schedule 31.01.2012
comment
JWindow не получает фокус. И componendMoved возникает только после завершения перемещения и не работает, когда мы перемещаем окно и нажимаем [ESC] - person Alexandr; 31.01.2012
comment
Рассмотрим тогда undecorated JDialog. - person rtheunissen; 01.02.2012
comment
я не хочу терять фокус из TextField) - person Alexandr; 01.02.2012