我正在尝试修改现有的JavaFX GUI程序,使其具有“始终保持最佳状态”的功能。目前JavaFX不支持这一点(为什么!?!?),所以一些谷歌搜索让我相信我必须将Swing与我的JavaFX应用程序结合才能实现这一目标。不理想,但还行。
我发现的所有示例模式都使用JFXPanel
而不是Stage
,但是因为我的应用程序已经存在并且从一开始就使用JavaFX编写(目前零Swing在代码库中) ,从应用程序中删除Stage
开始成为一个主要的重写,只是为了支持这个“在顶部”功能。
如何在Stage
或类似内容中嵌入现有JavaFX JFXPanel
,这将允许我使用标准getSomeSwingWindowOrPanel().setAlwaysOnTop(true);
并使我的应用程序浮动在所有其他窗口之上预期?我是不是错了,即。是否有更好的方法,如使用JNI或其他东西?
答案 0 :(得分:1)
Java 8u20中的阶段添加了setAlwaysOnTop()方法。
public final void setAlwaysOnTop(boolean value)
设置属性alwaysOnTop的值。
物业描述:
定义此舞台是否保持在其他窗口之上。 如果某个其他窗口已经始终在顶部,那么这些窗口之间的相对顺序是未指定的(取决于平台)。
如果存在安全管理器,应用程序之间的行为会有所不同。具有权限的应用程序可以在舞台上设置“always on top”标志。在没有适当权限的应用程序中,将忽略设置标志的尝试,并且属性值将恢复为“false”。
该属性是只读的,因为它可以由底层平台在外部进行更改,因此不能绑定。
默认值:
假
<强>时间:强>
JavaFX 8u20
答案 1 :(得分:0)
我发现的所有示例模式都使用JFXPanel而不是Stage,但是因为我的应用程序已经存在并且从一开始就使用JavaFX编写(此时Swing在代码库中为零),所以从应用程序中删除Stage成为一个重要的重写只是为了支持这个“在顶部”的功能。
添加“始终保持最佳状态”功能(不删除舞台)的更好方法是: -
<强> stage.initModality(Modality.APPLICATION_MODAL); 即可。
我希望它对你有用........
干杯
[1] http://docs.oracle.com/javafx/2/api/javafx/stage/Stage.html