我正在使用多个窗口处理ScalaFX应用程序。但是,如果我在另一个窗口处于打开状态时拖动一个ScalaFX窗口,则整个桌面将无法响应。发生这种情况时,大多数应用程序根本不响应鼠标事件,并且无法关闭任一ScalaFX窗口。我发现恢复响应能力的唯一方法是通过任务管理器终止Java进程,任务管理器本身只能在发出ctrl-alt-del之后打开。
这是一个可以触发问题的简单脚本。它加载一个窗口,等待3秒,然后打开第二个窗口。但是,如果在第二个窗口打开的同时拖动第一个窗口,则会触发该问题。
import javafx.embed.swing.JFXPanel
import scalafx.application.Platform
import scalafx.scene.Scene
import scalafx.scene.control.Label
import scalafx.stage.Stage
new JFXPanel
Platform.runLater {
val stage = new Stage {
title = "Stage 1"
width = 300
height = 200
scene = new Scene {
root = new Label("Stage 1")
}
}
stage.showAndWait()
}
Thread sleep 3000
Platform.runLater {
val stage = new Stage {
title = "Stage 2"
width = 300
height = 200
scene = new Scene {
root = new Label("Stage 2")
}
}
stage.showAndWait()
}
我在Windows 10计算机上使用Java 8 update 60和Scalafx 8.0.40-R8。
关于为什么会发生这种情况或如何解决问题的想法?