关闭JDialog时,JDialog中的javax.swing.Timer不会停止
我有一个小应用程序,主JFrame打开JDialog作为模态。在这个JDialog中,我启动一个javax.swing.Timer,如果JDialog关闭,它应该停止关闭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
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
usesetDefaultCloseOperation(JDialog.DISPOSE\u ON\u CLOSE)代码>:p就是这样。我刚刚在JDialog定义中添加了“implements WindowListener”,并让Eclipse添加缺少的方法。这显然不起作用。容易忽略addWindowListener
;很高兴你把它整理好了。