java - 如何动态更改 FormatedTextField 掩码?

标签 java swing

所以我有这个 FormatedTextField

JFormattedTextField myFtf = new JFormattedTextField();

它具有以下掩码,放置在我的应用程序构造函数中

try {
    myFtf.setFormatterFactory(
        new DefaultFormatterFactory(
           new MaskFormatter("###.###.###-##")));
} catch (java.text.ParseException ex) {
    ex.printStackTrace();
}

然后,我有两个单选按钮,它们应该更改 myFtf 中的掩码格式化程序。

我尝试过以下方法:

private radioButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                                  
    try {
        myFtf.setFormatterFactory(
            new DefaultFormatterFactory(
                new MaskFormatter("###.###.###-##")));
    } catch (Exception e) {
        e.printStackTrace();
    }
}                                                 

private void radioButton2ActionPerformed(java.awt.event.ActionEvent evt) {                      
    try {
        myFtf.setFormatterFactory(
            new DefaultFormatterFactory(
               new MaskFormatter("##.###.###/####-##")));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这工作正常,直到我尝试在文本字段中有输入时更改它们的掩码。如果有的话,它就不再改变面具了。以下是几张打印品:

<小时/>

好的场景:

图片: enter image description here

切换单选按钮给我这个:

img b: enter image description here

<小时/>

错误场景:

img c: enter image description here

切换单选按钮给我这个:

img d: enter image description here

我期望 img dimg a

<小时/>

如何正确动态更改其掩码?

最佳答案

我已经正常工作了!我所需要做的就是添加一个

myFtf.setValue(null);

设置新的格式化程序工厂后。 myFtf.setText("") 没有按预期工作,但已经很接近了! :-)

关于java - 如何动态更改 FormatedTextField 掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30417260/

相关文章:

java - 尝试通过单击 Jbutton 从另一个类打开新的 Jframe

java - Swing 中的 JTable

java - 如何创建仅在子类内部具有调用访问权限的方法?

java 使用 JPanel 的大小来调整组件的大小

java - 调用 dispose() 时窗口未关闭

java - 无法使用 IPV6 地址向端点发送 SIP 通知

java - JInternalFrame 最小化,同时保持当前位置

java - 如何使用 ArchUnit 检查是否在正确的类中调用了构造函数?

java - Java 将子数组复制到已初始化数组的方法

java - 同步对象序列化(Android)