繁体   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