2012-03-19 27 views
1

我是从JavaFX开始的,并且遇到了性能问题。我会尝试解释而不是粘贴代码,因为它太长而不是集中。如何在JavaFX上重新使用/编辑已添加到场景的Group对象

我开始我的应用程序,调用启动方法并收到Stage对象。到现在为止,这一切都很好。

现在我开始用Groups创建我的结构。我创建了我的第一个组(我们称之为'A'),并在舞台上用setRoot()进行设置。然后创建3个其他组(每个组都有一个复杂的叶子结构),并将每个组添加为第一组(我们称之为'A')的子组。

问题:我想只更新一个组结构,而不做所有这些,并在Stage对象上再次调用setRoot()。 - 但是如果我尝试从父项中删除它,我得到一个异常“java.lang.IllegalStateException:不在FX应用程序线程上”。 - 如果我尝试将其放在另一个组上,我仍会得到相同的异常。

有什么办法可以重用我已经创建的组,或者只是替换我需要重做的组?

我想顶多解释我的问题,但因为英语不是我的自然语言我希望你能理解;)

在此先感谢...

回答

3

Not on FX application thread;意味着你在运行的UI操作错误的线程。修改用户界面只应发生在UI线程(又名“FX应用程序线程”)上,否则就不可能同步UI操作。为了实现这一目标使用下面的代码:

Platform.runLater(new Runnable() { 
    public void run() { 
     A.getChildren().clear(); // or whatever operation you need 
    } 
}); 

其中Platformjavafx.application.Platform

+0

喜谢尔盖,真的感谢您的回复。我认为你有问题= D我现在在工作,我的学习在家。后来,在家里我会尝试这个,并给你一个反馈...再次感谢... – 2012-03-19 12:36:18

+0

谢尔盖,它完美的作品!再次感谢。 – 2012-03-19 23:47:30

相关问题