用户关闭JDialog时的指示

时间:2014-07-15 08:53:21

标签: java swing jdialog windowlistener

我的java代码中有一个JDialog,我希望在用户关闭JDialog时得到指示,当用户关闭JDialog时,java中是否有任何方法可以获取指示?

3 个答案:

答案 0 :(得分:2)

只需向其添加WindowListener并覆盖windowClosing()windowClosed()方法。

当用户尝试关闭窗口时调用

WindowListener.windowClosing(),当窗口关闭时调用WindowListener.windowClosed()

示例:

dialog.addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
        System.out.println("User attempted to close the dialog!");
    }
});

答案 1 :(得分:1)

对于模式对话框,显示对话框的调用后的代码将不会继续,直到对话框关闭。即,

JDialog dialog = new JDialog((Frame)null, true); // true = modal
System.out.println("before");
dialog.setVisible();
System.out.println("after"); // <-- won't happen until the dialog is closed

对于非模态对话框,请像对待任何其他窗口一样使用WindowListener(或WindowAdapter)调用dialog.addWindowListener并覆盖windowClosing或{{ 1}},取决于您是否需要阻止关闭或仅检测它。

答案 2 :(得分:1)

为了获得最佳控制,我建议您创建自己的对话框,扩展Jdialog,然后覆盖函数setVisible(boolen value)和dispose()。默认情况下,当用户单击关闭按钮对话框转到funcit setVisible(false)时,您可以使用 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)更改此设置。这是一个简单的代码。

    public class MyDialog extends JDialog {



      public MyDialog(){
         super();
         this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setSize(new Dimension(200,200));
        setVisible(true);
      }


       public void dispose(){
          System.out.println("dialog disposed");
          // put your code here
          super.dispose();
        }


       public void setVisible(boolean value) {
           System.out.println("dialog set visible : " + value);
           // or put your code here
           super.setVisible(value);
       }

  }