如果textfield包含数字,请检查运行时

问题描述 投票:0回答:2

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

我不明白为什么它不起作用。也许我不理解在运行时更改某些内容的概念。任何输入都非常感谢!

java javafx scenebuilder
2个回答
0
投票

你可以试试这个(仅限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() returns empty?

如果您希望使用原始检查路线,如果它不等于a-z,也不要记得考虑A-Z。或者在检查之前将字符转换为小写,因为匹配是特定于案例的。

仅限FX8

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

    }

0
投票

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

编辑:哎呀,你说得对,我错过了!至于它是运行时,是不是所有事件运行时?

© www.soinside.com 2019 - 2024. All rights reserved.