我正在学习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);
}
}