Ввод только цифр TextField javafx

Как можно организовать ввод только положительных цифр в текстовое поле? Т.е. если на клавиатуре нажать на букву или любой символ - то в поле ввода ничего не печатается.


Ответы (1 шт):

Автор решения: Зонтик

Алгоритм:

  1. Регистрируете текстовое поле в слушатель событий.

  2. В методе слушателя событий получаете текст из текстового поля (с помощью метода getText()).

  3. Проверяете, что строка содержит только цифры. Есть два варианта, как это можно сделать.

    Вариант №1 (простой): Просто попытаться получить из строки число. Если операция пройдёт удачно, то это значит, что в строке только цифры. Если нет - то в строке есть что-то ещё:

    try {
        Integer.parseInt(value); 
        //value - переменная String с полученным текстом из поля
        System.out.println("Ура, в строке цифра!");
    } catch (NumberFormatException e){
        System.out.println("В строка не цифра =(");
    }
    

    Вариант №2 (посложнее, и пожалуй, помедленее): использовать регулярное выражение:

    String regex = "[0-9]+"; 
    System.out.println(value.matches(regex)); 
    //value - переменная String с полученным текстом из поля
    

    Про проверку строки на то, что она является числом рекомендую почитать это (на русском) или это (правда, на английском).

  4. Если пользователь ввёл цифру, то очищаете текстовое поле (методом setText(), в параметры просто передайте пустую строку).

→ Ссылка