JavaFX的。停止一切,除了一个过程

时间:2015-08-02 07:03:29

标签: java multithreading javafx

public void close(){

    KeyValue opacity = new KeyValue(canvas
            .opacityProperty(), 0);
    KeyFrame end = new KeyFrame(Duration.millis(500),
            opacity);
    Timeline t = new Timeline(end);
    t.play();
    t.setOnFinished(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            stage.close();
        }
    });
}

我有这样一种方法,可以在退出app之前更改不透明度。它工作正常,但在这0.5秒内,我仍然可以与UI进行交互。问题是如何在退出之前停止除此时间轴执行之外的所有内容?

2 个答案:

答案 0 :(得分:0)

取决于您如何设置项目。您可以在整个场景中添加窗格。好吧,这并不妨碍任何人使用键盘。所以另一种方法是消费所有这样的事件:

root.addEventFilter(Event.ANY, e -> {
  e.consume();
});

答案 1 :(得分:0)

致电

stage.getScene().getRoot().setDisable(true);

在开始时间线之前