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