Проверьте во время выполнения, если текстовое поле содержит число - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь выяснить, как я могу проверить во время выполнения, вводится ли число в текстовое поле, и затем я хочу выполнить Backspace, чтобы удалить его самостоятельно. Мой код @FXML public void onKeyTyped(KeyEvent event) { if (!(event.getText().matches("[a-z]"))) { event.consume(); } }

Я не понимаю, почему это не работает. Может быть, я не понимаю концепции изменения чего-либо во время выполнения. Любой вклад приветствуется!

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

вы можете попробовать это (только FX11)

    //check if character typed is a number
    if (event.getCharacter().matches("[0-9]"))
    {
        event.consume();

        //move caret back one step as we do not want the typed digit
        //and want the caret to remain after last entered text
        textField.backward();

        //delete the typed digit
        textField.deleteNextChar();

    }

Обратите внимание, что здесь используется event.getCharacter () вместо event.getText ().Для меня getText () всегда пусто, как в этой ссылке:

JavaFX KeyEvent.getText () возвращает пустое значение?

Не также, если вы хотите перейти к оригиналумаршрут проверки, если он не равен z, не забудьте учесть также и AZ.Или преобразуйте символ в нижний регистр, прежде чем проверять совпадения в зависимости от регистра.

Только FX8

if (event.getCharacter().matches("[0-9]"))
    {
        event.consume();

    }
0 голосов
/ 12 апреля 2019

Я догадываюсь, потому что вы проверяете a-z, когда вы должны проверять 0-9.

Редактировать: Упс, вы правы, я пропустил! Что касается времени выполнения, разве не все события выполняются?

...