所以我有这个 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();
}
}
这工作正常,直到我尝试在文本字段中有输入时更改它们的掩码。如果有的话,它就不再改变面具了。以下是几张打印品:
<小时/>
好的场景:
图片:
切换单选按钮给我这个:
img b:
<小时/>
错误场景:
img c:
切换单选按钮给我这个:
img d:
我期望 img d 与 img a
<小时/>
如何正确动态更改其掩码?
我已经正常工作了!我所需要做的就是添加一个
myFtf.setValue(null);
设置新的格式化程序工厂后。 myFtf.setText("")
没有按预期工作,但已经很接近了! :-)
我是一名优秀的程序员,十分优秀!