代码之家  ›  专栏  ›  技术社区  ›  mmutilva

jformattedtextfield的maskformatter中的部分匹配

  •  0
  • mmutilva  · 技术社区  · 16 年前

    如何设置maskformatter和jformattedtextfield以允许部分匹配?

    例如:

    我希望用户能够使用这个掩码“

    但是,我也希望用户能够输入“12346578”,转换为“12345678”,并且仍然是一个有效值(因此我可以使用jformatedtextfield1.get value()获得它)

    这是我代码的一部分:

    JFormattedTextField jFormattedTextField1;
    MaskFormatter mf;
    
    mf = new MaskFormatter("## ###### ####");
    jFormattedTextField1.setFormatterFactory(new DefaultFormatterFactory(mf));
    

    我已经尝试将focuslostbehavior设置为持久化,以便在退出jformattedtextfield1后不会清除该值,但是这样,当使用调用jformattedtextfield1.get value()时,我会得到一个空值。

    1 回复  |  直到 16 年前
        1
  •  0
  •   mmutilva    16 年前

    解决方法是使用星号设置掩码,并将其有效字符设置为数字 还有空间角色 .

    JFormattedTextField jFormattedTextField1;
    MaskFormatter mf;
    
    mf = new MaskFormatter("** ****** ****");
    mf.setValidCharacters("0123456789 ");
    jFormattedTextField1.setFormatterFactory(new DefaultFormatterFactory(mf));
    

    然后我总是可以修剪getValue()得到的字符串,以便删除后面的空格。