我有一个小应用程序,主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,windowClosing甚至windowDeactivated ......无济于事
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.out.println("Closing");
t.stop();
}
如何在关闭JDialog时停止计时器?
答案 0 :(得分:2)
我在此示例中添加了WindowListener
,它似乎有效。
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.out.println(e);
}
});