Ограничение ввода textField

190
05 июня 2018, 02:10
TextFormatter<Integer> sevenFormat = new TextFormatter<>(c -> c
        .getControlNewText().length() > 4 ? null : c);
textFieldSizeFile.setTextFormatter(sevenFormat);
textFieldSizeFile.setTextFormatter(new TextFormatter<Integer>(change -> {
    if (!(change.getControlNewText().matches("[0-9]"))) {
        return null;
    } else {
        return change;
    }
}));

Как сделать так, чтобы было одновременно, и ограничение ввода символов (ничего кроме цифр), и их количество не более 4. По отдельности они работают, а вдвоем не хотят.

Answer 1

Можно использовать один из них если подправить регекс

textFieldSizeFile.setTextFormatter(new TextFormatter<Integer>(change -> {
    if (!(change.getControlNewText().matches("[0-9]{1,4}"))) {
        return null;
    } else {
        return change;
    }
}));
Answer 2
 textFieldSizeFile.setTextFormatter(new TextFormatter<String>(change -> {
        if (!(change.getControlNewText().matches("[0-9]{0,4}"))) {
            return null;
        } else {
            return change;
        }
    }));

Исправил.Все работает.Но единственное иногда почему-то одна буква вводится а потом не дает

READ ALSO
Предназначение логических операторов

Предназначение логических операторов

Я знаю как с битами работать, типа сдвиги, операторы |, &, ^В просторах интернета пишут, что они используются для низкоуровневых задач, в технике...

161
Как этот код переложить на стримы

Как этот код переложить на стримы

Итак, задача состоит в том, чтобы из списка сотрудников составить Map, ключом которого будет интервал зарплат, а значением - список сотрудников,...

250
Вырезка строк Java [закрыт]

Вырезка строк Java [закрыт]

Имеется переменная типа String "daily - ежедневный"Нужно вывести сначала "daily", а потом "ежедневный"

193
Замена слов в строке Java

Замена слов в строке Java

Есть строка, допустим

214