JavaFX: кнопки NullPointerException при заполнении ComboBoxJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JavaFX: кнопки NullPointerException при заполнении ComboBox

Сообщение Anonymous »

Я работаю над приложением JavaFX для школьного проекта и столкнулся с неприятной проблемой. ComboBox в моем MainController инициализируется правильно, но нажатие на любую кнопку в интерфейсе вызывает исключение NullPointerException только тогда, когда я заполняю ComboBox в инициализации< /код> метод. Если я удалю содержимое ComboBox, все будет работать нормально.
Фрагменты кода:
Вот упрощенная версия соответствующего кода:

Код: Выделить всё

public class MainController {
@FXML
private StackPane mainPane;
@FXML
private ComboBox accessComboBox;

public void initComponents(Stage stage, Employee employee) {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/Main.fxml"));
Parent root = loader.load();

Scene scene = new Scene(root);
stage.setScene(scene);
stage.setTitle("MotorPH Payroll Management System");
stage.show();

MainController controller = loader.getController();
controller.setEmployee(employee);
} catch (IOException e) {
throw new RuntimeException(e);
}
}

@FXML
private void initialize() {
// This line causes the buttons to throw NullPointerException
accessComboBox.setItems(FXCollections.observableArrayList("Employee", "Admin"));
}

private void loadScene(String fxmlPath) {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlPath));
Parent root = loader.load();

mainPane.getChildren().clear();
mainPane.getChildren().setAll(root);
} catch (IOException e) {
e.printStackTrace();
}
}

@FXML
public void loadHomeScene() {
loadScene("/view/employee/HomeScene.fxml");
}

@FXML
public void loadProfileScene() {
loadScene("/view/employee/ProfileScene.fxml");
}

// Other scene loading methods...
}
FXML: Сообщения об ошибках:

Код: Выделить всё

Caused by: java.lang.NullPointerException: Cannot invoke "javafx.scene.control.ComboBox.setItems(javafx.collections.ObservableList)" because "this.accessComboBox" is null
at com.motorph.controller.MainController.initialize(MainController.java:33)
Вопрос:
Что может быть причиной того, что accessComboBox становится нулевым, когда я пытаюсь его заполнить в методе инициализации, тем более что я использую метод initComponents для загрузки файла FXML? Будем очень признательны за любые советы и идеи!
Что я пробовал:

[*]Проверено, что методы onAction в FXML правильно связаны с методами в MainController.

[*] Убедитесь, что пути FXML в методе loadScene верны и что соответствующие файлы FXML существуют.

[*]Очистка основной панели

[*]Очистка основной панели

[*]Очистка основной панели code> перед загрузкой нового контента.

[*]Добавлено ведение журнала для отслеживания нажатия кнопок и загрузки сцен.

[*]Проверено наличие нулевых указателей, особенно для mainPane, что может указывать на то, что он был введен неправильно.



Подробнее здесь: https://stackoverflow.com/questions/790 ... -populated
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»