2

嘿,伙计们,我想知道是否可以将 JFormattedTextField 设置为具有电子邮件输入的自动格式。例如,当用户输入电子邮件地址时,我希望它接受如下内容:jsmith1@smith.com

但我希望它总是像这个名字@site.something(net,com,edu)

基本上我总是想要'@'和'。'

4

2 回答 2

3

我认为您最好的选择是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 描述了一个一页长的正则表达式,该正则表达式根据真实规范涵盖了电子邮件,但也许您可以简化您的要求;-)

于 2011-05-16T11:48:16.830 回答
0

没有简单的方法(也就是说,没有 JFormattedTextField.autoEmail() 之类的东西)。但是编写这样的代码并不难。在用户按下按钮或其他输入字段内容的字段中,如果没有 @ 和 ,则不要接受输入。人物。要么做一个快速检查,看看他们是否包含它,如果没有,将它附加到最后。

于 2011-05-15T16:12:26.570 回答