我正在为我应该在这里展示什么代码而苦苦挣扎,因为它非常复杂并且它同时工作。
问题是我构建了一个相对复杂的 JavaFX 场景图,并用它从 Scala 应用程序更新了 VBox 的内容。
现在,当我使用 sbt run 运行应用程序时,使用控制台窗口,sceneragph 加载速度很快。当我从打包的 .jar 运行它时(我为此使用 sbt-one-jar),sceenraph 需要很长时间才能加载。
所以一切都在工作,一切都以同样的方式工作,除了从 .jar 运行会神奇地减慢它。
无论如何,我粘贴了一些代码,即使它不是很有启发性:
def SetVboxSceneGraph(
id:String,
blob:String,
handler:(MyEvent)=>Unit
)
{
val comp=MyComponent.FromBlob(blob,handler)
comp.CreateNode
val box=GetMyBox(id)
val vbox=box.GetNode.asInstanceOf[VBox]
vbox.getChildren().clear()
vbox.getChildren().add(comp.GetParent)
}
编辑:
根据 sillyfly 的建议,我测量了每一步更新场景图的时间。减慢的步骤是:
comp.CreateNode
这是负责从 XML 标记(作为“blob”传递)构建 JavaFX 场景图的部分,我开发它来描述所谓的“MyComponent”,它们是从现有 JavaFX 小部件构建自定义小部件的类。构建场景图后,更新需要相同的时间。