仅接受数字的文本字段

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));