【问题标题】:Java - MaskFormatterJava - MaskFormatter
【发布时间】:2012-02-18 21:38:50
【问题描述】:

有人可以帮帮我吗...我已经尝试了各种方法(包括此处的帮助),但这不起作用。 我正在使用带有 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);

问题在于它既不限制字符也不限制长度(此外,如果输入非数字,文本也会开始重叠)。而且我尝试了各种各样的类似面具的操作。有人可以告诉我我做错了什么吗?

谢谢

【问题讨论】:

    标签: java swing jformattedtextfield


    【解决方案1】:

    我刚刚尝试了这段代码,它在一个小问题上运行良好:

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

    【讨论】:

    • 我做了你所做的改变(把“####”放在MaskFormatter中就可以了!我不敢相信我在网上找不到任何东西,只要把格式文本放在那里。非常感谢
    【解决方案2】:

    最简单的方法是将Document 添加到JFormattedTextFieldNumber formatter,或者另一种方法是添加DocumentListener,用于example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-19
      • 1970-01-01
      • 2016-08-19
      相关资源
      最近更新 更多