scala => javafx弹出窗口

时间:2012-11-21 16:20:49

标签: scala

我想使用javafx

在scala中创建一个pop-in
final val popup = new Popup  
val text: Text = new Text(s)
popup.setAutoFix(false)
popup.setHideOnEscape(true)
popup.getContent().addAll(text)
popup.setX(250)
popup.setY(175)
popup.show(stage)

但我有一个错误

org.view.View@72d873: caught java.lang.IllegalStateException: Not on FX application thread; currentThread = ForkJoinPool-1-worker-1
java.lang.IllegalStateException: Not on FX application thread; currentThread = ForkJoinPool-1-worker-1
有人有个主意吗?

感谢

1 个答案:

答案 0 :(得分:3)

您可能应该在FX Application线程上调用show方法,如错误所示。

这是因为修改UI的代码必须在特定的UI线程上执行(对于Swing和其他GUI框架也是如此),以防止并发更新并保证UI组件的一致性。

通常这些修改已在正确的线程上进行,该线程执行UI事件侦听器的回调代码,但如果您需要从另一个线程访问UI,则必须在FX应用程序线程上安排它。致电

javafx.application.Platform.runLater(Runnable r)

,如

runLater (new Runnable() {
    def run = popup.show(stage)
})