Привязка максимального размера текстового поля к свойству

#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 свойства?