【发布时间】:2016-10-12 22:54:18
【问题描述】:
我正在构建一个警报,它由两部分组成
在javafx类中创建的动画按钮和正常创建的引擎
我需要的是每当用户按下关闭按钮并启动引擎的动画按钮,然后在引擎关闭后会有一段时间,然后动画按钮再次出现,依此类推 所以我用了 ::
notify_me.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
new engine();
Platform.exit();
}
});
为了重复这个过程,我使用了
Timer t = new Timer(0,new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
while(true){
javafx.launch(javafx.class);
//some extra code goes here including sleep for
//some time and check for engine window state
}
}
});
t.start();
但我面临两个问题:
-
some extra code在平台退出之前不会实现, -
launch()不能多次调用
那么我怎样才能在不使用线程的情况下实现呢?谢谢
【问题讨论】:
-
调用
Platform.exit会关闭应用程序并使 JavaFX 线程无效。即使理论上可以从同一个程序启动一个新的 JavaFXApplication,也可能非常不鼓励这样做。你能准确解释你想要达到的目标吗?另外 - 看看this tutorial。Task可能就是你要找的。span> -
好吧,while循环在运行时会出现异常,所以我不知道为什么platform.exit没有完全终止它,所以我可以平静地重新启动它我需要的是该javafx类的暂停和播放方法终止然后重新启动它不起作用,保持它工作都不会在之后运行代码