JavaFx FileChooser without Stage



我正在学习JavaFx,遇到了一个问题。我试图使用JavaFx的FileChooser,就像我习惯于使用Swing-in main((方法的JFileChooser一样。但是我发现我需要一个窗口对象。我尝试搜索解决方法,但没有找到。我也尝试过null(就像你在JFileChooser中所做的那样(和新的Stage((,所以这些都不在桌面上。我试图模仿JFileChooser.showOpenDialog((。有什么合理的方法可以使其工作吗?

main 方法不会在 FX 应用程序线程上执行,因此无法显示其中的FileChooser。(在 Swing 中你也不能真正做到这一点,除非你使用的是SwingUtilities.invokeLater(...)

在 JavaFX 中,启动应用程序的责任在于 start() 方法,该方法在 FX 应用程序线程上执行。(在许多运行时环境中,JavaFX 应用程序中甚至不需要main方法。

只需显示 start 方法中的文件选择器,您可以在其中访问primaryStage(或者如果您愿意,可以只传递null(:

public class MyApp extends Application {
    public void start(Stage primaryStage) {
        FileChooser configFileChooser = new FileChooser();
        File configFile = configFileChooser.showOpenDialog(primaryStage);
        // ... parse file and create UI, etc...
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

最新更新