首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何暂停Java.uti.Timer?

如何暂停Java.uti.Timer?
EN

Stack Overflow用户
提问于 2016-09-02 16:37:44
回答 1查看 1.3K关注 0票数 4

我正在开发一个JavaFX应用程序,在该应用程序中,我使用java.util.Timer来跟踪用户鼠标的移动。

这个概念是,如果鼠标在场景中几秒钟内不移动,那么当鼠标移动按钮再次出现时,按钮将是不可见的。每当用户将光标放在按钮计时器上时,当退出时,按钮计时器将是stopped.And,按钮计时器将重新启动。

这是开始计时器方法。

代码语言:javascript
复制
    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();
}

这是为了阻止计时器

代码语言:javascript
复制
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();
    }

}

现在,当应用程序启动时,我的代码一开始运行良好,但是当我重新加载应用程序时,回调函数会像预期的那样触发,但是按钮会消失,尽管光标在按钮上。

如果有人能帮我那就太好了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-02 17:02:35

PauseTransition可用于在指定时间后隐藏Button

每当一个MOUSE_MOVE事件被触发时,在场景中,从一开始就播放PauseTransition;如果MOUSE_MOVE是为某个Button触发的,则停止PauseTransition,并通过使用它来阻止事件到达Scene

代码语言:javascript
复制
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<MouseEvent> 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();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39297155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档