我有一個框架,它啓動swingTimer執行週期性任務。問題是當我關閉框架時,任務仍然繼續。如果按下關閉按鈕,我想讓swingTimer停止。關閉幀關閉jTimer
我已經試過指定EXIT_ON_CLOSE
和DISPOSE_ON_CLOSE
但這些不起作用。有人知道我應該怎麼做嗎?
謝謝
我有一個框架,它啓動swingTimer執行週期性任務。問題是當我關閉框架時,任務仍然繼續。如果按下關閉按鈕,我想讓swingTimer停止。關閉幀關閉jTimer
我已經試過指定EXIT_ON_CLOSE
和DISPOSE_ON_CLOSE
但這些不起作用。有人知道我應該怎麼做嗎?
謝謝
擺動計時器有一個停止方法。如果「框架」(JFrame ??)通過WindowListener結束,則始終可以調用該框架。
另外,根據我的測試,如果EDT停止,Timer應該自行停止。例如:
import java.awt.event.*;
import javax.swing.*;
public class StopTimer extends JPanel {
private static final float FONT_SIZE = 32;
private Timer myTimer;
private JLabel timerLabel = new JLabel("000");
private int count = 0;
public StopTimer() {
timerLabel.setFont(timerLabel.getFont().deriveFont(FONT_SIZE));
add(timerLabel);
int timerDelay = 1000;
myTimer = new Timer(timerDelay , new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
count++;
timerLabel.setText(String.format("%03d", count));
System.out.println("count: " + count);
}
});
myTimer.start();
}
private static void createAndShowUI() {
JFrame frame = new JFrame("StopTimer");
frame.getContentPane().add(new StopTimer());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
如果不幫你,然後做我做了什麼:張貼小編譯和執行的程序演示你的問題。
什麼是jTimer?你不是在談論Swing Timer嗎?如果EDT結束,我認爲Swing Timers應該停止。它也有一個stop()方法,可以完全停止它。 –
對不起,我的意思是SwingTimer不是JTimer – Roger