[英]Create a modal javafx.stage.FileChooser inside a swing application
我有一個Swing應用程序,其主窗口繼承了JFrame
類。 該應用程序正在過渡到JavaFX,因此JavaFX組件上有很多東西,包括控制面板。 我需要相對於主要JFrame
以非模式方式從非UI線程顯示本機文件選擇器。 可以通過設置FileChooser
類的所有者來實現,但是需要javafx.stage.Window
作為所有者。 是否有一些技巧可以將JFrame
設置為javafx FileChooser
或Stage
所有者?
解決方案可能是禁用以某種方式選擇JFrame
直到FileChooser
關閉。
這是一些偽代碼,因為我不知道該怎么做:
setFocusableWindowState(false)
嗎?) Thread.join()
或者您想管理線程),將焦點恢復到JFrame 其實就像:
JFrame frame = // get window
frame.setEnabled(false); // emulate window modality
File file = fileChooser.showOpenDialog(null);
if (file == null || !openFile(file)) { // return true if file was opened correctly
frame.setEnabled(true);
frame.requestFocus(); // window looses focus after enabling
}
因此, FileChooser
在這里的行為類似於模式窗口。 缺點是需要控制所有路徑以啟用窗口后退功能,因此它不會永遠保持禁用狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.