Sembunyikan popup saat diklik pada header JFrame

Saya memiliki JFrame dan JTextField di dalamnya.

Saya membuat jendela popup berdasarkan JWindow, ini muncul ketika textField memiliki nilai yang tidak valid.

Saya ingin menyembunyikan popup saya ketika JFrame utama dipindahkan atau ketika saya mengklik header JFrame.


person Alexandr    schedule 31.01.2012    source sumber


Jawaban (1)


Tambahkan WindowFocusListener ke JWindow, dan setVisible(false) ketika jendela kehilangan fokus. Sesuatu seperti ini:

  popup.addWindowFocusListener(new WindowAdapter() {

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

Atau jika bukan itu yang Anda cari, Anda dapat menambahkan ComponentListener ke JFrame Anda:

  frame.addComponentListener(new ComponentAdapter(){

     public void componentMoved(ComponentEvent e) {
         if (popup.isVisible()){
             popup.setVisible(false);
         }
      }
  });
person rtheunissen    schedule 31.01.2012
comment
JWindow tidak menerima fokus. Dan componendMoved hanya terjadi ketika pemindahan selesai dan tidak berfungsi ketika kita memindahkan jendela dan menekan [ESC] - person Alexandr; 31.01.2012
comment
Pertimbangkan kemudian undecorated JDialog. - person rtheunissen; 01.02.2012
comment
saya tidak ingin kehilangan fokus dari TextField) - person Alexandr; 01.02.2012