JavaRush /Блог /Архив info.javarush /JavaFX работа с TextField и элементом TableView.
Artemka58_1
21 уровень

JavaFX работа с TextField и элементом TableView.

Статья из группы Архив info.javarush
Помогите пожалуйста разобраться. Имееются несколько классов. Класс Employee - объект который может содержать данные типа SimpleStringProperty. Есть fxml файл в котором находится разметка окна для добавления\изменения списка объектов Employees. Класс AddEmployee является обработчиком событий fxml файла. При добавлении текста в TextField из выбранного объекта Employees начинает ругаться. Отдельно если смотреть, то данные "извлекаются" из объекта, но вставить в TextField не получается. Код обработчика: @FXML private TextField tf_employee; @FXML private TextField tf_surname; @FXML private TextField tf_name; @FXML private TextField tf_patronymic; @FXML private TextField tf_post; Employees employees; public void setEmployees(Employees employees) { if (employees == null){ return; } this.employees = employees; tf_employee.setText(employees.getId_eml()); tf_employee.setText(employees.getId_eml().toString()); tf_surname.setText(employees.getSurname_empl()); tf_name.setText(employees.getName_empl().toString()); tf_patronymic.setText(employees.getPathronymic_empl()); tf_post.setText(employees.getPost_empl()); } Код объекта: private SimpleStringProperty id_eml = new SimpleStringProperty(""); private SimpleStringProperty surname_empl = new SimpleStringProperty(""); private SimpleStringProperty name_empl = new SimpleStringProperty(""); private SimpleStringProperty pathronymic_empl = new SimpleStringProperty(""); private SimpleStringProperty post_empl = new SimpleStringProperty(""); public Employees(){} public Employees(String id_empl, String surname_empl, String name_empl, String pathronymic_empl, String post_empl) { this.id_eml = new SimpleStringProperty(id_empl); this.surname_empl = new SimpleStringProperty(surname_empl); this.name_empl = new SimpleStringProperty(name_empl); this.pathronymic_empl = new SimpleStringProperty(pathronymic_empl); this.post_empl = new SimpleStringProperty(post_empl); } public String getId_eml() { return id_eml.get(); } Ошибка: Caused by: java.lang.NullPointerException at controllers.AddEmployee.setEmployees(AddEmployee.java:39) at controllers.EmployeesController.onButtonPressedAction(EmployeesController.java:89) указывает на tf_employee.setText(employees.getId_eml()); Само окно:JavaFX работа с TextField и элементом TableView. - 1
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
funner Уровень 21
3 июля 2016
Вероятно на момент запуска строки 39 поле TextField tf_employee не инициализировано (в java-коде).
Проверьте наличие связи fx:id для поля TextField tf_employee в FXML
<TextField fx:id="tf_employee" text="" />

Если Вы используете SceneBuilder стоит посмотреть здесь: