【问题标题】:JDialog with WindowStateListener带有 WindowStateListener 的 JDialog
【发布时间】:2011-08-19 22:09:34
【问题描述】:

我试图捕捉用户点击和 JDialog 的“X”按钮的事件,并且只有在用户确认时才会关闭。所以这是我正在做的事情的骨架:

    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”时,我没有收到打印消息,因为从未调用过该方法。我不确定问题出在哪里。

【问题讨论】:

    标签: java jdialog windowlistener


    【解决方案1】:

    您想使用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();
            }
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      相关资源
      最近更新 更多