Как добавить регулярное выражение в textfieldtablecell? - PullRequest
0 голосов
/ 22 сентября 2019

Я должен добавить регулярное выражение или шаблон к textfieldtablecell с помощью textproperty или другим способом, подобным этому коду, но для простого textfield

textfield.textProperty().addListener((observable, oldValue, newValue) -> {
     if (!newValue.matches("\\sa-zA-Z0-9*._ ")) {
         if (!newValue.matches("\\d*")) {
            textfield.setText(newValue.replaceAll("[^\\sa-zA-Z0-9 ._]", ""));
         }
     }
});

1 Ответ

3 голосов
/ 23 сентября 2019

, как предлагает Клеопатра, вы должны использовать TextFormatter, например:

TextField textField = new TextField();
textField.setTextFormatter(new TextFormatter<String>(change -> {
    String text = change.getControlNewText();
    if (text.length() == 0 || text.matches(MY_REGEX)) {
        return change;
    }
    return null;
}));

Примечания:

  1. проверка длины, необходимая для очистки текстового поля (сBackspace)

  2. MY_REGEX должно быть правильно определено для mach при каждом вводе символа.

    • , например, если у вас есть [AZ] {2}он не позволяет набирать A , но позволяет вставлять AB , например
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...