我正在创建一个JavaFX应用程序,在该应用程序中,我按下启动按钮时会读出问题并生成解决方案。问题是,当我单击开始按钮时,GUI挂起。我查看了this post,它建议在Platform.Runlater中包装线程安全的方法。
现在单击该按钮时,将调用控制器中的方法doBtnStartPressed()。此方法仅包含对showSolution()方法的调用。然后我将此方法的内容包装在Platform.runLater中,如下所示:
private void showSolution() {
Platform.runLater(new Runnable() {
public void run() {
// solve problem
// draw solution on panes (rectangles which represent time windows)
}
});
}
但这并不起作用。
答案 0 :(得分:1)
您可以在JavaFX中找到后台任务的一般概述以及如何处理它们:http://www.guigarage.com/2014/10/datafx-8-released/(滚动到标题" ProgressChain")。
此外,我在我的" JavaFX Enterprise"中提到了这个主题。今年在JavaOne上发表演讲。您可以在此处找到幻灯片:http://de.slideshare.net/HendrikEbbers/javafx-enterprise-javaone-2014?related=1
关于JavaFX和UI工具包中的并发性的一般性讨论可以在这里找到:
答案 1 :(得分:0)
你需要在runLater之外解决长时间运行的操作,并且也在那里构造SceneGraph元素(没有实际将它们附加到父元素)然后在一个简单的调用中将它们添加到你的真实场景中runLater call。