Как изменить TextField с другого фрейма?

142
26 июня 2021, 20:30

Пишу программу в которой вызывается 2й фрейм в котором происходит выбор папки. При нажатии кнопки закрывается фрейм и путь передается в 1й фрейм в котором есть TextField для отображения пути. Вопрос в том что не могу настроить изменения поля постольку не могу вызиваться нон-статик переменные с других классов (хотел сделать изменение при нажатии потому что 1й фрейм не закрывается при открытии второго). Есть ли способ добавить лисенер (на изменение String пути или нажатии кнопки в другом фрейме) при котором я смогу поменять TextField. Спасибо.

public class Controller {
    // First frame controller
    public static String path;
    public static String nickname;
    @FXML
    private TextField nicknameField;
    @FXML
    public TextField pathField;
    @FXML
    private Button changeDirButton;
    @FXML
    private Button submitButton;

    @FXML
    void initialize() {
        changeDirButton.setOnAction(event -> {
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(getClass().getResource("/sample/dirs/dirs.fxml"));
            try {
                loader.load();
            } catch (IOException e) {
            }
            Parent r = loader.getRoot();
            Stage stage = new Stage();
            stage.setTitle("Directories");
            stage.setScene(new Scene(r, 400, 310));
            stage.showAndWait();
        });
    }
}

//Метод высылки String в другой класс и закрытия фрейма
pathSubmitButton.setOnAction(actionEvent -> {
    Controller.path = path;
    pathSubmitButton.getScene().getWindow().hide();
    System.out.println(Controller.path);
});
Answer 1

Если действовать прямолинейно и в лоб, то: после вызова loader.load(); можно получить getController() вашего второго окна и имея его экземпляр передать в него this контроллер исходного окна, он и будет своего рода слушателем. А там уже дергайте нужные методы. Если программа небольшая, то подход имеет место быть, но такое может быстро превратиться в неконтролируемый хаос. Можно так же обыграть использование слушателей у Property fx типов и посмотреть в сторону EventBus

READ ALSO
Сжатие изображений JPG до указанного размера в байтах

Сжатие изображений JPG до указанного размера в байтах

Есть ли библиотека Java, в которой была бы функция сжатия JPG изображения до определённого (в параметрах) размера в байтах?

114
Regex: составление запроса

Regex: составление запроса

Пожалуйста, помогите составить регулярное выражение, которое будет матчить такой текст:

82
Из строки получить ZonedDateTime

Из строки получить ZonedDateTime

Есть строка: "2019-11-28T02:25:30372079"

113
Как в андроиде использовать протокол exchange ActiveSync

Как в андроиде использовать протокол exchange ActiveSync

Как в андроиде использовать протокол exchange ActivveSync ?Не могу найти ни туториал не пример , везде показывают как подключать его в почту андроида...

89