java - 退出jframe时 Swing 停止定时器

标签 java swing timer camera jframe

我有一个特定的任务,我按预定的时间间隔运行。基本上,我在 JFrame 的标签上显示了一个摄像头源。但是,当我退出 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);
    }


}

最佳答案

最好使用 Swing Timer如果预定代码正在修改 GUI。否则,如果您使用的是非 Swing Timer比你需要用 cancel() 关闭它.

关于java - 退出jframe时 Swing 停止定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15964461/

相关文章:

java - Java 的 try-with-resources 是捕获错误还是捕获异常?

java - JTable 单元格重叠

Java伪定时器

ios - 在 iOS 项目中使用 schedule()

Java GUI 未加载

java - 当我尝试解析 JSON 字符串时收到意外的内部错误

java - 在 hibernate 搜索中使用一个查询获取具有关联的实体

java - 如果里面有 JPanel,JPopupMenu 会动态改变大小

java - 将 Xml 文件导入 java 应用程序

java - isEventDispatchThread 超出 EDT 但从 EventDispatchThread.run 运行