【问题标题】:JDialog with WindowListener - windowClosing not fired带有 WindowListener 的 JDialog - 未触发 windowClosing
【发布时间】:2011-12-30 16:13:10
【问题描述】:

我有一个扩展 JDialog 的类,它有一个窗口监听器:

class MyClass extends JDialog {

     public MyClass() {
         setDefaultCloseOperation( JDialog.DO_NOTHING_ON_CLOSE );
         addWindowListener( new WindowAdapter() {

                @Override
                public void windowClosing(WindowEvent e) {
                    System.out.println("closing...");
                    //do something...
                }

            });
     }

}

当我单击 X 按钮时,没有任何反应。而且我没有看到“关闭……”的字样

我错过了什么?

【问题讨论】:

  • 代码看起来很合理,发SSCCE 来说明问题。

标签: java swing jdialog windowlistener


【解决方案1】:

为我工作。另请参阅此相关的example

import java.awt.EventQueue;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JDialog;

class MyClass extends JDialog {

    public MyClass() {
        setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("closing...");
                //do something...
            }
        });
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                MyClass m = new MyClass();
                m.setVisible(true);
            }
        });
    }
}

【讨论】:

  • 谢谢例如。我发现在添加窗口侦听器之前我正在调用 setVisible...
  • 看,sscce 的力量!我很确定我也做过类似的事情。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
相关资源
最近更新 更多