private int limitTime = 10;
void timer() {
limitTime = 10;
Thread thread = new Thread() {
@Override
public void run() {
stop = false;
while(!stop) {
System.out.println("Time >> " limitTime);
//Platform.runLater(()->{
lbLimitTime.setText(Integer.toString(limitTime));
limitTime -= 1;
//});
if(limitTime < 1) stop = true;
try { Thread.sleep(1000); } catch (InterruptedException e) {}
}
};
};
thread.setDaemon(true);
thread.start();
}
我們正在使用 JavaFX 創建 GUI 程式。
每次單擊時,我都會嘗試將計時器設定為 10 秒。
如果通過在 10 秒前單擊來復制計時器功能,則時間會快兩倍。
你認為我不明白哪一部分?
每當發生點擊時都會呼叫計時器函式。
當點擊發生時,我想初始化現有的計時器并正常流動 1 秒。
uj5u.com熱心網友回復:
對于您的用例,使用 Thread 不是一個好主意,請使用TimerTask和java.util.Timer
// class wide variables
TimerTask timerTask;
Timer timer = new Timer("myTimer");
int limitTimer = 10;
public TimerTask createTask() {
limitTimer = 10;
return new TimerTask() {
@Override
public void run() {
System.out.println("Time>> " limitTime);
limitTime--;
if (limitTime <= 0) {
cancel();
}
}
}
}
void click() {
if (timerTask != null) {
timerTask.cancel();
}
timerTask = createTask();
timer.scheduleAtFixedRate(timerTask, 0, 1000);
}
當呼叫 click 方法時,它會取消舊的計時器并啟動一個新的計時器。
注意:limitTimer變數不是執行緒安全的,所以如果你在其他地方更新它,它可能會導致奇怪的行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/341394.html
