我在 ScalaFX 中编写了一个 GUI,在隔离测试时效果很好。需要提及的事情:
- “真正的”应用程序本身已经有一个 main 方法,只有那个应该用于启动应用程序,而不是我在扩展 JFXApp 时得到的那个。所以对 JFXApp 的 main 方法的调用是从外部手动完成的
- 应该可以将数据结构传递给JFXApp,所以我添加了一个setter
整个启动过程是这样的:
def main(args: Array[String]) {
...
...
JFXGui.setData(data)
JFXGui.main(Array())
}
问题:
- 只要不调用JFX对象的main方法,我就无法绘制数据对象的内容,所以
setData
实际上只是一个简单的setter方法。想法是在被调用JFXGui
后尽快提取数据。JFXGui.main
但是:我怎么能在里面意识到这一点JFXGui
?有没有类似“onready”的方法? - 在上面的代码中,我尝试将setter的调用放在main方法的调用之后,这样setter就可以触发绘图了。我没有想到的是它
JFXGui.main
会永远阻塞,因此对 setter 的调用是无法访问的代码。
我该如何解决这个问题?任何帮助表示赞赏,谢谢。
编辑:
JFXGui
是我的 ScalaFX UI 的名称:
object JFXGui extends JFXApp {
private var data: Data = _
def setData(data: Data) {
this.data = data;
}
// tons of ScalaFX related things which visualize the data object
// ...
}