fix: bidirectional binding cannot be chained. Closes #1067.

This commit is contained in:
huanghongxun
2021-09-26 03:24:32 +08:00
parent 6c1046c060
commit 3515ce1034

View File

@@ -170,32 +170,31 @@ public class MultiFileItem<T> extends VBox {
} }
public static class StringOption<T> extends Option<T> { public static class StringOption<T> extends Option<T> {
private StringProperty value = new SimpleStringProperty(); private JFXTextField customField = new JFXTextField();
private ValidatorBase[] validators;
public StringOption(String title, T data) { public StringOption(String title, T data) {
super(title, data); super(title, data);
} }
public String getValue() { public String getValue() {
return value.get(); return customField.getText();
} }
public StringProperty valueProperty() { public StringProperty valueProperty() {
return value; return customField.textProperty();
} }
public void setValue(String value) { public void setValue(String value) {
this.value.set(value); customField.setText(value);
} }
public StringOption<T> bindBidirectional(Property<String> property) { public StringOption<T> bindBidirectional(Property<String> property) {
this.value.bindBidirectional(property); customField.textProperty().bindBidirectional(property);
return this; return this;
} }
public StringOption<T> setValidators(ValidatorBase... validators) { public StringOption<T> setValidators(ValidatorBase... validators) {
this.validators = validators; customField.setValidators(validators);
return this; return this;
} }
@@ -211,13 +210,8 @@ public class MultiFileItem<T> extends VBox {
left.setUserData(data); left.setUserData(data);
pane.setLeft(left); pane.setLeft(left);
JFXTextField customField = new JFXTextField();
BorderPane.setAlignment(customField, Pos.CENTER_RIGHT); BorderPane.setAlignment(customField, Pos.CENTER_RIGHT);
customField.textProperty().bindBidirectional(valueProperty());
customField.disableProperty().bind(left.selectedProperty().not()); customField.disableProperty().bind(left.selectedProperty().not());
if (validators != null) {
customField.setValidators(validators);
}
pane.setRight(customField); pane.setRight(customField);
return pane; return pane;