所以我有这个 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("")
没有按预期工作,但已经很接近了! :-)
关于java - 如何动态更改 FormatedTextField 掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30417260/