в .fxml файле есть объект Text со своим fx:id
<Text fx:id="system_messages" layoutX="202.0" layoutY="638.0" strokeType="OUTSIDE" strokeWidth="0.0" text="сообщений пока нет..." wrappingWidth="889.69921875">
в главном контроллере я объявил этот объект с таким же именем, как и fx:id.
public class MainController implements Initializable {
@FXML
Text system_messages;
...
Теперь мне требуется изменить текст объекта
system_messages, например на "Возникла ошибка", но не в
MainController а в другом классе, например в классе
SystemMessagesController в специально отведенном контроллере, который будет изменять тексты текстбоксов... Я это пытаюсь сделать вот так:
public class SystemMessagesController {
MainController main = new MainController();
public void system_messages(String type) {
switch (type) {
case "UnknownHostException": {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("main.fxml"));
main = (MainController) fxmlLoader.getController ();
main.system_messages.setText("Ошибка получения данных. Проверьте подключение к интернету.");
}
default: {
main.system_messages.setText("Ошибка получения данных. Ошибка неизвестна.");
}
}
}
}
Но возникает ошибка
Caused by: java.lang.NullPointerException: Cannot read field "system_messages" because "this.main" is null
Я понимаю это как-то связано с
@FXML перед объявлением объекта
Text system_messages; но мне не хватает знаний понять, как это можно исправить... Все же хочется не мусорить в главном контроллере, а сделать это во втором... Помогите пожалуйста.