我正在使用Swing应用程序,但是该应用程序的某些部分开始使用JavaFX。现在,我想使用JavaFX FileChooser,因为它显示了操作系统特定的对话框(更好的可用性)。
问题在于情态。对于其他对话框,存在几种方法来解决Swing中JavaFX的模式问题(例如,使用另一个JFXPanel
将对话框内容包装在Swing框架中,将阶段的alwaysOnTop
设置为true
,.. )。 FileChooser似乎无法同时实现这两种功能。
当前,我正在使用这种方法,这几乎是一个可行的解决方案(警告:这只是草稿,应添加CountDownLatch
和用法try {} finally {}
)
JDialog dialog;
SwingUtilities.invokeLater({ =>
dialog = new JDialog(thisView.getCanvas().getRootPane() as Frame, "", true);
dialog.setUndecorated(true);
dialog.setVisible(true);
});
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Load Composition From File");
fileChooser.showOpenDialog(null);
dialog.setVisible(false);
想法是一个不可见的模态Swing对话框“阻止” Swing应用程序,直到用户关闭FileChooser。效果很好。
唯一的问题是FileChooser可以移到后台。设置alwaysOnTop = true
对我来说是可以的,但是找不到一种方法。有什么建议吗?