隐藏后阶段未开始

时间:2019-03-11 06:52:49

标签: java javafx

我希望每5秒显示一次隐藏表单。隐藏表单时-不再显示。我不明白为什么会这样。

Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.setAlwaysOnTop(true);
primaryStage.show();
Platform.setImplicitExit(false);

Platform.runLater(() -> System.out.println("Inside Platform.runLater()"));


ScheduledExecutorService hider = Executors.newScheduledThreadPool(1);
hider.schedule(
 new Runnable() {
  @Override public void run() {
   Platform.runLater(new Runnable() {
    @Override public void run() {
     if (primaryStage.isShowing()) {
      primaryStage.hide();
     } else {
      primaryStage.show();
     }

    }
   });
  }
 }, 5, TimeUnit.SECONDS);

1 个答案:

答案 0 :(得分:0)

ScheduledExecutorService.schedule

  

创建并执行一次动作

要定期执行某项操作,请使用ScheduledExecutorService.scheduleAtFixedRate

  

创建并执行定期操作

在隐藏主要阶段之后,也不再次调用可运行对象,因此请使用handle_error而不是隐藏:

setIconified(true)

考虑使用像 ScheduledExecutorService hider = Executors.newScheduledThreadPool(1); hider.scheduleAtFixedRate( () -> Platform.runLater(() -> { if (!primaryStage.isIconified()) { primaryStage.setIconified(true); } else { primaryStage.setIconified(false); } }), 5, //initial delay 5, //period delay TimeUnit.SECONDS ); 这样的javafx动画工具的替代实现:

PauseTransition