Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JFormattedTextfield接受字符串之类的名称?_Java_Swing_Jformattedtextfield - Fatal编程技术网

Java 如何使用JFormattedTextfield接受字符串之类的名称?

Java 如何使用JFormattedTextfield接受字符串之类的名称?,java,swing,jformattedtextfield,Java,Swing,Jformattedtextfield,如果我只想接受字母和空格,那么JFormattedTextField中的FormatterFactory的因子值是多少 因为我希望它只接受名字。比如-johndoe我找不到一种优雅的方式来使用格式化程序。非优雅的方法是创建一个MaskFormatter,主要问题是您将限制允许的字符数(尽管您可以限制为任意大的数字) 我觉得在这种情况下,验证输入比限制字符更好。如果您想使用这种方法,我可以添加一个示例 编辑:使用InputVerifier,您必须对其进行子类化并覆盖verify,如下所示 JTe

如果我只想接受字母和空格,那么
JFormattedTextField
中的
FormatterFactory
的因子值是多少


因为我希望它只接受名字。比如-
johndoe

我找不到一种优雅的方式来使用格式化程序。非优雅的方法是创建一个
MaskFormatter
,主要问题是您将限制允许的字符数(尽管您可以限制为任意大的数字)

我觉得在这种情况下,验证输入比限制字符更好。如果您想使用这种方法,我可以添加一个示例


编辑:使用
InputVerifier
,您必须对其进行子类化并覆盖
verify
,如下所示

JTextField textField = new JTextField();
textField.setInputVerifier(new InputVerifier() {
    @Override
    public boolean verify(JComponent input) {
        String text = ((JTextField) input).getText();
        if (text.matches("[a-zA-Z ]+")) // Reads: "Any of a-z or A-Z or space one or more times (together, not each)" ---> blank field or field containing anything other than those will return false.
            return true;
        return false;
    }
});

在满足要求之前,文本字段不会产生焦点(父组件除外)。

是,我想使用这种方法。示例是什么???@EnamAhmedShahaz添加了示例。
JTextField textField = new JTextField();
textField.setInputVerifier(new InputVerifier() {
    @Override
    public boolean verify(JComponent input) {
        String text = ((JTextField) input).getText();
        if (text.matches("[a-zA-Z ]+")) // Reads: "Any of a-z or A-Z or space one or more times (together, not each)" ---> blank field or field containing anything other than those will return false.
            return true;
        return false;
    }
});