5

スケジュールされた間隔で実行する特定のタスクがあります。基本的に、JFrame の Label にカメラ フィードを表示します。ただし、JFrame を終了すると、アプリケーションが実行されているように見えます。どうすればそれを止めることができますか? 関連する部分だけを残して、コードの詳細を取り除きました

public class TaskCLass extends JFrame {

    JPanel p;
    JLabel l;
    Timer timer;

    public TaskCLass() {

        p = new JPanel();
        l = new JLabel("Window");
        add(p);
        p.add(l);
        setSize(700, 600);

        this.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println(e);
                timer.purge();
                timer.cancel();
                System.exit(1);
            }

            public void windowClosed(WindowEvent e) {
                System.out.println(e);
                timer.purge();
                timer.cancel();
                System.exit(1);
            }
        });


        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        startTask();
    }

    public static void main(String[] args) {

        new TaskCLass();
    }


    public void startTask() {


        TimerTask t = new TimerTask() {

            @Override
            public void run() {
              //.........

            }
        };

        timer = new Timer();
        timer.schedule(t, 0, 200);
    }


}
4

1 に答える 1

3

スケジュールされたコードが GUI を変更している場合は、スイング タイマーを使用することをお勧めします。それ以外の場合は、Swing以外のタイマーを使用している場合は、 cancel()でシャットダウンする必要があります。

于 2013-04-12T07:28:50.340 に答える