嘿,伙计们,我想知道是否可以将 JFormattedTextField 设置为具有电子邮件输入的自动格式。例如,当用户输入电子邮件地址时,我希望它接受如下内容:jsmith1@smith.com
但我希望它总是像这个名字@site.something(net,com,edu)
基本上我总是想要'@'和'。'
嘿,伙计们,我想知道是否可以将 JFormattedTextField 设置为具有电子邮件输入的自动格式。例如,当用户输入电子邮件地址时,我希望它接受如下内容:jsmith1@smith.com
但我希望它总是像这个名字@site.something(net,com,edu)
基本上我总是想要'@'和'。'
我认为您最好的选择是AbstractFormatter
对电子邮件进行子类化并使用正则表达式,例如:
public class EmailFormatter extends AbstractFormatter {
@Override public Object stringToValue(String string) throws ParseException {
Matcher matcher = regexp.matcher(string);
if (matcher.matches())
return string;
throw new ParseException("Not an email", 0);
}
@Override public String valueToString(Object value) {
return value;
}
final private Pattern regexp = Pattern.compile("EMAIL REGEXP TO FIND BY YOURSELF");
}
...
JFormattedTextField email = new JFormattedTextField(new EmailFormatter());
请注意,我让您发现电子邮件的正确正则表达式;您可以使用简单的方法,或者如果您愿意,可以查看一个 RFC,该 RFC 描述了一个一页长的正则表达式,该正则表达式根据真实规范涵盖了电子邮件,但也许您可以简化您的要求;-)
没有简单的方法(也就是说,没有 JFormattedTextField.autoEmail() 之类的东西)。但是编写这样的代码并不难。在用户按下按钮或其他输入字段内容的字段中,如果没有 @ 和 ,则不要接受输入。人物。要么做一个快速检查,看看他们是否包含它,如果没有,将它附加到最后。