Java FX инициализация полей

76
09 февраля 2022, 02:00

Пишу свое первое приложение на JavaFX - чат. Столкнулся с проблемой обновления данных в компоненте сцены JavaFX - textArea. Этот компонент инициализируется только один раз при загрузке сцены из FXML файла в классе контроллере методом void initialize(). При работе чата я хотел сделать традиционную модель MVC. Идея проста - контроллер(клиент) меняет модель данных и параллельно заставляет view часть(конкретно переменную textArea)обновляться данными, вытягиваемые из модели. Но не тут то было, застрял на реализации обновления данных в textArea(где отображаются сообщения пользователей). Переменную textArea, как я понял, нельзя обновлять вне метода void initialize(). В голове крутится вариант каждый раз обновлять всю сцену при обновлении модели, но ведь это затратно... Может быть, кто-нибудь подскажет как решаются проблемы такого характера. Буду очень благодарен

    public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
public class Controller {
    @FXML
    private TextArea textChatArea;

    @FXML
    void initialize() throws InterruptedException {
        setMessage("Hello");
    }
    public void setMessage(String message) {
        textChatArea.setText(message);
    }
}
public class Model {
    public static void main(String[] args) throws InterruptedException {
        Controller controller = new Controller();
        controller.setMessage("Hello");
    }
}
READ ALSO
Время конкретного пользователя в Java

Время конкретного пользователя в Java

В коде имеется сервис, который разрешает/отклоняет HTTP запрос в зависимости от времени (до 11:00 разрешено, после - запрещено)На текущий момент...

102
Не изменяется размер Frame

Не изменяется размер Frame

По нажатию на кнопки в подменю с определенным размером окна должен установится данный размер окна,но этого не происходитНе могу понять почему

98
Запись файлов на SD карту

Запись файлов на SD карту

Как записывать файлы на флеш-карту в андроиде?

85