Я хочу изменить текст метки с помощью контроллера из другого класса. Я сделал метод в FXMLDocumentController, который устанавливает текст на этикетке:JavaFX Изменить текст метки из другого класса с помощью контроллера
public void setLabelText(String text)
{
lbZeit.setText(text);
}
Теперь я хочу, чтобы изменить этот текст из другого класса, как мой SerialHandlerClass. Во-первых, мне нужен контроллер, верно? Так что я сделал это:
FXMLLoader loader = new FXMLLoader(FXMLDocumentController.class.getResource("FXMLDocument.fxml"));
loader.load();
controller = (FXMLDocumentController) loader.getController();
Теперь я бегу метод "setLabelText" ....
controller.setLabelText("asd");
... и ничего не происходит ...
Это очень смешно, потому что когда Я добавляю System.out.println(text);
к методу setLabelText (String text), программа записывает правильный текст в консоль.
Но почему?
Извините за мой плохой английский, это не мой родной язык :)
Спасибо, Джулиан
Откуда берутся lbZeit? Вы (правильно) вводите его с помощью @FXML? Вы (неправильно) присваиваете ему значение с помощью lbZeit = new Label()? Is lbZeit null? У вас есть fx: id = "lbZeit" (не id = "lbZeit") в вашем FXML? – jewelsea
Спасибо за ваш ответ! Я сделал все эти шаги, и если я выполняю функцию в том же классе, что и метод setLablText, все работает отлично! Может быть, мне нужно обновить интерфейс от другого класса? – Stjubit
Нет, вам не нужно обновлять пользовательский интерфейс из другого класса. Недостаточно информации для решения вашей проблемы. Измените свой вопрос, чтобы включить ответы на вопросы, которые я задал, - в том числе [mcve] (http://stackoverflow.com/help/mcve). – jewelsea