仅接受数字的文本字段
Text Field that accepts only numbers
注意:我在下面谈论的文本字段是我从 MaterialFX 获得的 MFXTextField .
我搜索了很多有关如何在 JavaFX 中制作只接受数字的文本字段的信息。我找到了很多视频和帖子,但它们都不适合我,也许是因为它们太旧了,只在过去有用过,我真的不知道。
所以,我有一个信用卡文本字段,我需要它来拒绝字母或数字以外的任何内容。这是我的文本字段:
这是我的代码,它接受常规 TextField 的 TextFormatter 而拒绝 MFXTextField:
UnaryOperator<TextFormatter.Change> integerFilter = change -> {
String newText = change.getControlNewText();
if (newText.matches("-?([1-9][0-9]*)?")) {
return change;
}
return null;
};
NormalTextField.setTextFormatter(
new TextFormatter<>(new IntegerStringConverter(), null, integerFilter));
CheckTextField.setTextFormatter(
new TextFormatter<>(new IntegerStringConverter(), null, integerFilter));
问题已解决。我所要做的就是将 setTextFormatter
替换为 delegateSetTextFormatter
,这是新代码:
UnaryOperator<TextFormatter.Change> integerFilter = change -> {
String newText = change.getControlNewText();
if (newText.matches("-?([1-9][0-9]*)?")) {
return change;
}
return null;
};
MFXTextField.delegateSetTextFormatter(
new TextFormatter<Integer>(new IntegerStringConverter(), null, integerFilter));
注意:我在下面谈论的文本字段是我从 MaterialFX 获得的 MFXTextField .
我搜索了很多有关如何在 JavaFX 中制作只接受数字的文本字段的信息。我找到了很多视频和帖子,但它们都不适合我,也许是因为它们太旧了,只在过去有用过,我真的不知道。
所以,我有一个信用卡文本字段,我需要它来拒绝字母或数字以外的任何内容。这是我的文本字段:
这是我的代码,它接受常规 TextField 的 TextFormatter 而拒绝 MFXTextField:
UnaryOperator<TextFormatter.Change> integerFilter = change -> {
String newText = change.getControlNewText();
if (newText.matches("-?([1-9][0-9]*)?")) {
return change;
}
return null;
};
NormalTextField.setTextFormatter(
new TextFormatter<>(new IntegerStringConverter(), null, integerFilter));
CheckTextField.setTextFormatter(
new TextFormatter<>(new IntegerStringConverter(), null, integerFilter));
问题已解决。我所要做的就是将 setTextFormatter
替换为 delegateSetTextFormatter
,这是新代码:
UnaryOperator<TextFormatter.Change> integerFilter = change -> {
String newText = change.getControlNewText();
if (newText.matches("-?([1-9][0-9]*)?")) {
return change;
}
return null;
};
MFXTextField.delegateSetTextFormatter(
new TextFormatter<Integer>(new IntegerStringConverter(), null, integerFilter));