Java - MaskFormatter

时间:2012-02-18 21:38:50

标签: java swing jformattedtextfield

有人可以帮助我...我已经尝试了各种各样的事情(包括这里的帮助),这只是行不通。 我正在使用带有MaskFormatter的JFormattedTextField将数据输入限制为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 个答案:

答案 0 :(得分:3)

我刚尝试过这段代码,但只有一个小问题就可以了。

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版本是什么?

答案 1 :(得分:2)

最简单的方法是将Document添加到Number formatter {{1}},或另一种方法是添加JFormattedTextFieldDocumentListener