检查运行时文本字段是否包含数字

Check on runtime if textfield contains a number

我想弄清楚如何在运行时检查是否在文本字段中输入了数字,然后我想执行退格键以自行删除它。我的代码是 @FXML public void onKeyTyped(KeyEvent event) { if (!(event.getText().matches("[a-z]"))) { event.consume(); } }

我不明白为什么它不起作用。也许我不明白在运行时改变某些东西的概念。非常感谢任何输入!

我猜是因为你在应该检查 0-9 的时候检查了 a-z。

编辑:糟糕,你说得对,我错过了 !。 至于它是运行时,不所有的事件都是运行时吗?

你可以试试这个(仅限 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() 总是空的,如 link:

JavaFX KeyEvent.getText() returns empty?

也不是,如果您想按照原来的路线检查它是否不等于 a-z,请记住也要考虑 A-Z。或者在检查之前将字符转换为小写,因为匹配是特定于大小写的。

仅限 FX8

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

    }