【发布时间】:2013-12-23 03:57:24
【问题描述】:
我正在尝试修改现有的 JavaFX GUI 程序,使其具有“始终保持领先”的功能。目前 JavaFX 不支持这一点(为什么!?!?),所以一些谷歌搜索让我相信我必须将 Swing 结合到我的 JavaFX 应用程序中才能实现这一点。不理想,但还可以。
我发现的所有示例模式都使用JFXPanel 而不是Stage,但是由于我的应用程序已经存在并且从一开始就使用JavaFX 编写(目前代码库中的Swing 为零),因此删除了@ 987654323@ 从应用程序开始成为一个主要的重写,只是为了支持这个“顶部”功能。
如何将现有的 JavaFX Stage 嵌入到 JFXPanel 或类似文件中,这将允许我使用标准的 getSomeSwingWindowOrPanel().setAlwaysOnTop(true); 并使我的应用程序按预期浮动在所有其他窗口之上?我是不是错了,即。有没有更好的方法,比如使用 JNI 之类的?
【问题讨论】:
-
你的舞台有一个有根的场景:把根放在 JFXPanel 中,你应该差不多完成了。
-
舞台确实有一个根——通过
FXMLLoader读入的FXML...但是将stage更改为JFXPanel会删除很多功能,例如特殊的javafx事件处理程序、舞台标题和stage.setOnCloseRequest()等等。有没有办法保留现有的程序逻辑并简单地将这个功能应用于Stage?