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

时间:2013-03-05 16:51:41

标签: 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(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时停止计时器?

1 个答案:

答案 0 :(得分:2)

我在此示例中添加了WindowListener,它似乎有效。

this.addWindowListener(new WindowAdapter() {

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