[英]Java Util Timer in a Button
我正在玩棋盤游戲,在游戲的一部分中,我需要像單擊此按鈕一樣,將標簽更改為以1秒的延遲間隔重復計數1到5,然后將標簽更改為“完成”,但問題是先將標簽更改為“完成”,然后再進行計數。
btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
// @Override
public void run() {
count++;
if (count >= 6) {
timer.cancel();
timer.purge();
return;
}
lbl.setText(String.valueOf(count));
}
}, 1000,1000);
lbl.setText("done");
}});
當您單擊按鈕時,按順序執行actionPerformed()方法:
然后,稍后計時器開始工作,並開始增加變量計數,每次按鈕標簽更新一次。 這樣的閱讀應該可以幫助您了解正在發生的事情:計時器是在單獨的線程中執行的。 timer.scheduleAtFixedRate()是一個非阻塞函數,該函數注冊一個TimerTask以便稍后執行並立即返回。
要解決您的問題,類似的方法可能是一種解決方案:
btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
// @Override
public void run() {
count++;
if (count >= 6) {
timer.cancel();
timer.purge();
// We set the label to done only when the counter
// reaches the value 6, after button displayed 5
lbl.setText("done");
return;
}
lbl.setText(String.valueOf(count));
}
}, 1000,1000);
}});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.