Java中的Timer 怎么暂停,如何暂停Java.uti.Timer?
我正在開發(fā)一個
JavaFX應(yīng)用程序,我使用java.util.Timer來跟蹤用戶鼠標(biāo)移動.
概念是如果鼠標(biāo)在場景中沒有移動幾秒鐘,那么只要鼠標(biāo)移動按鈕再次出現(xiàn),按鈕就會不可見.每當(dāng)用戶將光標(biāo)放在按鈕上時,計(jì)時器將停止.退出時,按鈕計(jì)時器將再次啟動.
這是啟動計(jì)時器方法
public static void startTimer(){
timer = new Timer();
task = new TimerTask() {
@Override
public void run() {
if(detection>0){
Util_Class.getUi_obj().getLeftbuttongroup().setVisible(false);
Util_Class.getUi_obj().getRightbuttongroup().setVisible(false);
}else{
detection++;
}
}
};
timer.schedule(task, 2000, 2000);
System.out.println("TIMER STARTED");
//startTimer();
}
這是為了停止計(jì)時器
public static void stopTimer(){
timer.cancel();
System.out.println("TIMER STOPED");
}
public void leftbuttonmovehandler(MouseEvent event){
if(event.getEventType()==MouseEvent.MOUSE_ENTERED){
System.out.println("MOUSE ENTERED");
Main.stopTimer();
}else if(event.getEventType()==MouseEvent.MOUSE_EXITED){
System.out.println("MOUSE EXITED");
Main.start();
}
}
現(xiàn)在我的代碼在應(yīng)用程序啟動時首先正常工作,但是當(dāng)我重新加載應(yīng)用程序時,回調(diào)函數(shù)會按預(yù)期觸發(fā),但是盡管光標(biāo)在按鈕上,按鈕仍會消失.
如果有人幫助我會很棒.
最佳答案 PauseTransition可用于在指定時間后隱藏按鈕.
每當(dāng)觸發(fā)MOUSE_MOVE事件時,在場景中,從頭開始播放PauseTransition;如果為其中一個按鈕觸發(fā)了MOUSE_MOVE,則停止PauseTransition,并通過消耗它來阻止事件到達(dá)場景
private PauseTransition timer;
private void startTimer() {
btn.setVisible(true);
btn2.setVisible(true);
timer.playFromStart();
}
private void stopTimer() {
btn.setVisible(true);
btn2.setVisible(true);
timer.stop();
}
private Button btn, btn2;
@Override
public void start(Stage primaryStage) {
timer = new PauseTransition(Duration.seconds(3));
btn = new Button("Button 1");
btn2 = new Button("Button 2");
timer.setOnFinished(evt -> {
btn.setVisible(false);
btn2.setVisible(false);
});
EventHandler buttonMouseMoveHandler = evt -> {
evt.consume();
stopTimer();
};
btn.setOnMouseMoved(buttonMouseMoveHandler);
btn2.setOnMouseMoved(buttonMouseMoveHandler);
VBox box = new VBox(100, btn, btn2);
StackPane root = new StackPane(new Group(box));
Scene scene = new Scene(root, 500, 500);
scene.setOnMouseMoved(evt -> {
startTimer();
});
startTimer();
primaryStage.setScene(scene);
primaryStage.show();
}
總結(jié)
以上是生活随笔為你收集整理的Java中的Timer 怎么暂停,如何暂停Java.uti.Timer?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第五周地狱总结
- 下一篇: Java8 通过foreach 遍历Li