检查运行时文本字段是否包含数字
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();
}
我想弄清楚如何在运行时检查是否在文本字段中输入了数字,然后我想执行退格键以自行删除它。我的代码是
@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();
}