簡體   English   中英

在JFXPanel中嵌入JavaFX Stage(Swing Embed)

[英]Embed JavaFX Stage inside JFXPanel (Swing Embed)

我正在嘗試修改現有的JavaFX GUI程序,使其具有“始終保持最佳狀態”的功能。 目前JavaFX不支持這一點(為什么!?!?),所以一些谷歌搜索讓我相信我必須將Swing與我的JavaFX應用程序結合才能實現這一目標。 不理想,但還可以。

我發現的所有示例模式都使用JFXPanel而不是Stage ,但是由於我的應用程序已經存在並且從一開始就使用JavaFX編寫(此時零Swing在代碼庫中),從應用程序中刪除Stage開始變為主要重寫只是為了支持這個“在頂部”的功能。

如何將現有的JavaFX Stage嵌入到JFXPanel或類似的中,這將允許我使用標准的getSomeSwingWindowOrPanel().setAlwaysOnTop(true); 並按預期使我的應用程序浮動在所有其他窗口之上? 我是不是錯了,即。 是否有更好的方法,如使用JNI或其他東西?

在Java 8u20中的階段中添加了setAlwaysOnTop()方法。

public final void setAlwaysOnTop(boolean value)

設置屬性alwaysOnTop的值。

樓盤簡介:

定義此舞台是否保持在其他窗口之上。 如果某個其他窗口已經始終在頂部,那么這些窗口之間的相對順序是未指定的(取決於平台)。

如果存在安全管理器,則應用程序之間的行為會有所不同。 具有權限的應用程序可以在舞台上設置“always on top”標志。 在沒有適當權限的應用程序中,將忽略設置標志的嘗試,並將屬性值恢復為“false”。

該屬性是只讀的,因為它可以由底層平台在外部進行更改,因此不能是可綁定的。

默認值:

以來:

JavaFX 8u20

我發現的所有示例模式都使用JFXPanel而不是Stage,但是由於我的應用程序已經存在並且從一開始就使用JavaFX編寫(此時零Swing在代碼庫中),從應用程序中刪除舞台開始變為主要重寫只是為了支持這個“在頂部”的功能。

添加“始終保持最佳狀態”功能(不刪除舞台 )的更好方法是: -

stage.initModality(Modality.APPLICATION_MODAL);

我希望這個對你有用........

干杯

[1] http://docs.oracle.com/javafx/2/api/javafx/stage/Stage.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM