4

JDialogをモーダルとして開くメインのJFrameを備えた小さなアプリケーションがあります。この JDialog 内で、JDialog が閉じると停止するはずの javax.swing.Timer を開始します。

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 の終了時にタイマーを停止するにはどうすればよいですか?

4

1 に答える 1

2

この例にa を追加したWindowListenerところ、うまくいくように見えました。

this.addWindowListener(new WindowAdapter() {

    @Override
    public void windowClosing(WindowEvent e) {
        System.out.println(e);
    }
});
于 2013-03-05T17:00:53.163 に答える