簡體   English   中英

在swing應用程序中創建一個模態javafx.stage.FileChooser

[英]Create a modal javafx.stage.FileChooser inside a swing application

我有一個Swing應用程序,其主窗口繼承了JFrame類。 該應用程序正在過渡到JavaFX,因此JavaFX組件上有很多東西,包括控制面板。 我需要相對於主要JFrame以非模式方式從非UI線程顯示本機文件選擇器。 可以通過設置FileChooser類的所有者來實現,但是需要javafx.stage.Window作為所有者。 是否有一些技巧可以將JFrame設置為javafx FileChooserStage所有者?

解決方案可能是禁用以某種方式選擇JFrame直到FileChooser關閉。

這是一些偽代碼,因為我不知道該怎么做:

  1. 以某種方式從JFrame中移除焦點(也許使用setFocusableWindowState(false)嗎?)
  2. 在FXApplication線程上打開FileChooser
  3. 完成之后(使用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.

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