Я участвую в процессе обучения JavaFx, и у меня возникла проблема. Я пытался использовать FileChooser из JavaFx, как я привык работать с JFileChooser из Swing-in в методе main(). Однако я узнал, что мне нужен объект Window. Я попытался найти обходной путь, но я не нашел его. Я также попробовал null (как вы это делали в JFileChooser) и новый Stage(), поэтому они не работают. Я пытался имитировать JFileChooser.showOpenDialog(). Есть ли разумный способ заставить его работать?JavaFx FileChooser без этапа
1
A
ответ
3
Метод main
не применяется к потоку приложения FX, поэтому вы не можете показать FileChooser
. (Вы не можете этого сделать и в Swing, если вы не используете SwingUtilities.invokeLater(...)
.)
В JavaFX ответственность за запуск приложения лежит в методе start()
, который выполняется в потоке приложения FX. (Во многих средах выполнения, вам даже не нужен метод main
в приложениях JavaFX.)
Просто показать выбор файлов из метода запуска, где у вас есть доступ к 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);
}
}
Что я могу сделать в Swing - JFileChooser jfc = new JFileChooser(); \t \t, если (jfc.showOpenDialog (нуль) == JFileChooser.APPROVE_OPTION) { \t \t \t = jfc.getSelectedFile файле проекта(); \t \t} в любом месте кода (включая main()) –
Просто потому, что вы можете это сделать, и это происходит на вашей конкретной платформе, не делает ее правильной. Этот код в Swing неверен: он показывает «JFileChooser» из потока, который не является потоком отправки событий. Нет гарантии, что он будет работать на других платформах или в будущих выпусках. Это очень распространенная ошибка, поэтому в JavaFX возникает проблема проверки потока (во многих случаях) и исключения исключений, если оно неверно. –
[Руководство по форматированию] (http://stackoverflow.com/help/formatting) –