ซ่อนป๊อปอัปเมื่อคลิกที่ส่วนหัว 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