JDialog с WindowStateListener - PullRequest
       21

JDialog с WindowStateListener

0 голосов
/ 20 августа 2011

Я пытаюсь поймать событие, когда пользователь нажимает на кнопку «X» на JDialog и закрывается, только если пользователь подтверждает.Итак, вот скелет того, что я делаю:

    public class MyDialog extends JDialog {
      public MyDialog(){
        super();
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        .........   
      }
      .........
    }

   public class Waiter implements WindowStateListener{
@Override
public void windowStateChanged(WindowEvent event) {
    System.out.println(event);
    if (event.getNewState() == WindowEvent.WINDOW_CLOSING) {
        if (shouldClose()) {
            dialog.close();
        }
    }
}
   }

   MyDialog dialog = new MyDialog();
   Waiter waiter = new Waiter();
   dialog.addWindowStateListener(waiter);

Как вы можете догадаться, когда я нажимаю «X» для диалогового окна, я не получаю напечатанное сообщение, потому что метод никогда не вызывается.Я не уверен, в чем проблема.

1 Ответ

3 голосов
/ 20 августа 2011

Вы хотите использовать WindowListener вместо WindowStateListener.
Попробуйте это:

MyDialog dialog = new MyDialog();        
dialog.addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(final WindowEvent event) {
        System.out.println(event);
        if (shouldClose()) {
            dialog.close();
        }
    }
});
...