我有一个特定的任务,我按预定的时间间隔运行。基本上,我在 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/