JFormattedTextField Вопрос - PullRequest
2 голосов
/ 15 мая 2011

Эй, ребята, мне было интересно, могу ли я установить JFormattedTextField для автоматического форматирования ввода электронной почты.Например, когда пользователь вводит адрес электронной почты, я хочу, чтобы он принимал что-то вроде этого: jsmith1@smith.com

Но я хочу, чтобы он всегда был таким как name@site.something (net, com, edu)

в основном я всегда хочу '@' и '.'

Ответы [ 2 ]

3 голосов
/ 16 мая 2011

Я думаю, что вам лучше всего подкласс 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, который описывает регулярное выражение на одну страницу, которое охватывает электронные письма в соответствии с реальными спецификациями, но, возможно, вы можете упростить свои требования; -)

0 голосов
/ 15 мая 2011

Нет простого способа (то есть нет такого понятия, как JFormattedTextField.autoEmail ()). Но было бы нетрудно написать что-то подобное. В поле, где пользователь нажимает кнопку или что-то еще, чтобы ввести то, что находится в поле, просто не принимайте ввод, если он не имеет @ и. персонажи. Либо так, либо сделайте быструю проверку, чтобы увидеть, включили ли они его, и если нет, добавьте его в конец.

...