Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关闭JDialog时,JDialog中的javax.swing.Timer不会停止_Java_Swing_Timer_Jdialog_Windowlistener - Fatal编程技术网

关闭JDialog时,JDialog中的javax.swing.Timer不会停止

关闭JDialog时,JDialog中的javax.swing.Timer不会停止,java,swing,timer,jdialog,windowlistener,Java,Swing,Timer,Jdialog,Windowlistener,我有一个小应用程序,主JFrame打开JDialog作为模态。在这个JDialog中,我启动一个javax.swing.Timer,如果JDialog关闭,它应该停止 public Tasks() { setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(100, 100, 800, 600); contentPane = new JPanel(); contentPane.setBorder(n

我有一个小应用程序,主JFrame打开JDialog作为模态。在这个JDialog中,我启动一个javax.swing.Timer,如果JDialog关闭,它应该停止

public Tasks() {
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setBounds(100, 100, 800, 600);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);

    showTasks();

    t = new Timer(10000, new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            Tasks.this.showTasks();
        }
    });
    t.start();

}
但它一直在运行

我尝试为JDialog实现WindowListener,我重写了windowClosed、windowClosed甚至windowDeactivated。。。无济于事

@Override
public void windowClosing(WindowEvent e) {
    // TODO Auto-generated method stub
    System.out.println("Closing");
    t.stop();
}

如何在关闭JDialog时停止计时器?

我在这个示例中添加了一个
WindowListener
,它似乎可以工作

this.addWindowListener(new WindowAdapter() {

    @Override
    public void windowClosing(WindowEvent e) {
        System.out.println(e);
    }
});

请编辑您的问题,以包含一个显示您的方法的对话框。
以模态打开JDialog
。确保在使对话框可见之前将WindowListener添加到对话框中。+1@devnull69如果是
JDialog
use
setDefaultCloseOperation(JDialog.DISPOSE\u ON\u CLOSE):p就是这样。我刚刚在JDialog定义中添加了“implements WindowListener”,并让Eclipse添加缺少的方法。这显然不起作用。容易忽略
addWindowListener
;很高兴你把它整理好了。