Java - MaskFormatter - PullRequest
       17

Java - MaskFormatter

2 голосов
/ 19 февраля 2012

Может кто-нибудь, пожалуйста, помогите мне ... Я пробовал все виды вещей (включая помощь здесь), и это просто не работает. Я использую JFormattedTextField с MaskFormatter для ограничения ввода данных до 4 (макс.) Цифр.

    static JFormattedTextField textPayout;

    MaskFormatter f;
try {
    f = new MaskFormatter("####");
} catch (ParseException e) {
    e.printStackTrace();
    return; // actual code not written yet.
}
textPayout = new JFormattedTextField(f);

Проблема в том, что он не ограничивает ни символы, ни длину (кроме того, тексты начинают накладываться друг на друга, если вводится не число). И я пробовал широкий спектр операций, подобных маске. Может кто-нибудь сказать мне, что я делаю не так?

Спасибо

Ответы [ 2 ]

3 голосов
/ 19 февраля 2012

Я только что попробовал этот код, и он отлично работал с одной незначительной проблемой:

class A extends JFrame {
    public static void main(String args[]) throws ParseException {
        A a = new A();
        a.setLayout(new GridLayout());
        JFormattedTextField textField =
                new JFormattedTextField(new MaskFormatter("####"));
        a.add(textField);
        a.add(new JButton("qwe"));
        a.setSize(300,50);
        a.setVisible(true);
    }
}

Проблема в том, что изначально текстовое поле заполнено 4 пробелами, поэтому мне пришлось их удалить. Наверное, это скомпилированная в Gentoo странность IcedTea 7.2.

В противном случае все работает просто отлично, вы можете попробовать мой код, и если он не работает, то какая у вас версия Java?

2 голосов
/ 19 февраля 2012

Самым простым способом было бы добавить Document к JFormattedTextField с Number formatter, или другой способ с добавлением DocumentListener , для пример

...