我试图找出如何检查运行时是否在文本字段中输入数字,然后我想要执行Backspace以自行删除它。我的代码是
@FXML
public void onKeyTyped(KeyEvent event) {
if (!(event.getText().matches("[a-z]"))) {
event.consume();
}
}
我不明白为什么它不起作用。也许我不理解在运行时更改某些内容的概念。任何输入都非常感谢!
你可以试试这个(仅限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();
}
我猜它是因为你在检查a-z时应该检查0-9。
编辑:哎呀,你说得对,我错过了!至于它是运行时,是不是所有事件运行时?