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 - 选择复选框时如何从 jtable 和数据库中删除一行?

java - 即使我知道我永远不会需要它,在我的对象中包含一个 setter 是一个好习惯吗?

java - 如何在android RecyclerView中将onBindViewHolder与多个项目一起使用

java - 没有 JButton 和 PropertyChangeListener 的 JProgressBar

java - 我不确定为什么无法访问变量

java - ProGuard:ClassCastException

java - 是否有更新使用 EJB 的应用程序的首选方法?

java - JRadioButton 鼠标悬停后才会出现

java - 使用 GridBagLayout 将组件全屏放置

java - jFreechart点点击时消失