Насколько я знаю, можно связать свойство и прочитать его значение из контроллера, оно отлично работает с полем только для чтения, таким как метка, но не работает с текстовым полем.
FXML:
<TextField text="${controller.userName}" />
контроллер:
private final StringProperty userName = new SimpleStringProperty();
public StringProperty userNameProperty() {
return userName;
}
Используя эту стратегию, я не могу установить значение текстового поля из пользовательского интерфейса.
Удаление привязки из FXMLдокумент и добавление привязки на стороне контроллера работает нормально:
FXML:
<TextField fx:id="userNameTextField" />
контроллер:
private final StringProperty userName = new SimpleStringProperty();
@FXML
private TextField userNameTextField;
@FXML
void initialize() {
userNameTextField.textProperty().bindBidirectional(userName);
}
но мне не нравится это решение, потому что яхочу развязать контроллер и FXML.
Мой вопрос: возможно ли иметь двунаправленную привязку без установки привязки на стороне контроллера?
Каков наилучший шаблон проектирования для соединения моей модели с моим уровнем представления?