У меня есть класс контроллера FXML с текстовым полем, которое я хочу заполнить различными файловыми свойствами файла, который пользователь выбирает с помощью FileChooser.
Контроллер выглядит так:
@FXML
TextField documentName;
File file;
public void attachNewDocFileChooser() {
file = new MyFileChooser().chooser();
if (file != null) {
documentName.setText(file.getName());
} else {
documentName.setText("No file selected");
}
}
FileChooser создается в другом классе MyFileChooser
:
@FXML
public File chooser() {
File file = null;
final JFileChooser fileDialog = new JFileChooser();
int returnVal = fileDialog.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = fileDialog.getSelectedFile();
}
return file;
}
Я не могу получить текстовое поле documentName
заполненное именем выбранного файла.
Я буду очень благодарен за любую помощь в выполнении этой работы. Спасибо всем заранее.
Обновление: появляется java.lang.NullPointerException
.
Я также забыл упомянуть, что chooser()
связан с onMouseClicked="#chooser"
так, что onMouseClicked="#chooser"
.
Единственное исключение NullPointerException может быть для documentName
все еще равным null. То есть, @FXML
не работает. Проверьте номер строки для исключения, чтобы убедиться, что это так. И затем загляните в загруженный файл.fxml.
@FXML(name="documentName")
public TextField documentName;
documentName.setText(file.getName());
из контроллера с FileChooser извлекается из другого класса.