Как запретить символы в JFormattedTextField? - PullRequest
0 голосов
/ 08 декабря 2011

В NetBeans, как я могу установить недопустимые символы для JFormattedTextField, чтобы он не разрешал: |, [, ] и т. Д .?

Неважно,Я разобрался с решением:

MaskFormatter formatter = null;

        try {
            //# - Any valid number, uses Character.isDigit.
            //' - Escape character, used to escape any of the special formatting characters.
            //U - Any character (Character.isLetter). All lowercase letters are mapped to upper case.
            //L - Any character (Character.isLetter). All upper case letters are mapped to lower case.
            //A - Any character or number (Character.isLetter or Character.isDigit)
            //? - Any character (Character.isLetter).
            //* - Anything.
            //H - Any hex character (0-9, a-f or A-F).
            formatter = new MaskFormatter("******************************");
            formatter.setInvalidCharacters("|[]");
        } catch (java.text.ParseException ex) {
        }

, затем в графическом интерфейсе правой кнопкой мыши щелкните JFormattedTextField, щелкните «Настроить код», в раскрывающемся списке рядом с myFormattedTextField = new javax.swing.JFormattedTextField(); выберите пользовательское создание и добавьте форматер в JFormattedTextFieldследующим образом: myFormattedTextField = new javax.swing.JFormattedTextField(formatter);

Надеюсь, это поможет кому-нибудь еще однажды.

1 Ответ

1 голос
/ 08 декабря 2011

Самый удобный способ - это добавить DocumentListener и там Pattern , значение для JFormattedTextField может быть вставлено (блок символов) или добавлено char за char, я предлагаю переопределить оба метода

insertUpdate()

changedUpdate()//Plain text components don't fire these events.

для вставленного блока символов будет лучше реализовано Pattern p = Pattern.compile("decision char filtering") напрямую

...