#java #javafx
#java #javafx
Вопрос:
Я ограничиваю свою TextField
максимальную длину таким образом:
int charLimit = 6;
TextField textField = new TextField();
UnaryOperator<TextFormatter.Change> filter = change -> {
boolean isNotTooLong = change.getControlNewText().length() <= charLimit;
return isNotTooLong ? change : null;
};
textField.setTextFormatter(new TextFormatter<>(filter));
Теперь я хотел бы привязать charLimit к IntegerProperty
.
Вот проект, каким я хочу, чтобы он был:
public final class LimitedTextField {
public LimitedTextField() {
TextField internalTextField = new TextField();
UnaryOperator<TextFormatter.Change> filter = change -> {
boolean isNotTooLong = change.getControlNewText().length() <= getCharLimit();
return isNotTooLong ? change : null;
};
textField.setTextFormatter(new TextFormatter<>(filter));
}
//Property
private final IntegerProperty charLimit = new SimpleIntegerProperty
(LimitedTextField.this, "charLimit");
public IntegerProperty charLimitProperty() {
return charLimit;
}
public void setCharLimit(int value) {
charLimit.set(value);
}
public int getCharLimit() {
return charLimit.get();
}
}
Правильный ли подход, который я представил выше? Будет TextFormatter
ли доступ к моей собственности правильно? Будет ли это видно? Может быть, мне следует создавать новое TextFormatter
при каждом изменении charLimit
свойства?