Java 如何动态更改格式化的TextField掩码?
所以我有一个格式化的文本字段Java 如何动态更改格式化的TextField掩码?,java,swing,Java,Swing,所以我有一个格式化的文本字段 JFormattedTextField myFtf = new JFormattedTextField(); 它有下面的掩码,放在我的应用程序构造函数中 try { myFtf.setFormatterFactory( new DefaultFormatterFactory( new MaskFormatter("###.###.###-##"))); } catch (java.text.ParseException
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();
}
}
这很好,直到我尝试在文本字段中有输入时更改它们的掩码。如果有,它不会再改变面具。以下是几张照片:
OK场景: img a: 切换单选按钮给了我以下信息: img b:
错误场景: img c: 切换单选按钮给了我以下信息: img d: 我希望img d和img a完全一样
如何正确地动态更改其掩码?将您的操作侦听器更改为:
private radioButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
myFtf.setFormatterFactory(
new DefaultFormatterFactory(
new MaskFormatter("###.###.###-##")));
myFtf.setText("");
} catch (Exception e) {
e.printStackTrace();
}
}
private void radioButton2ActionPerformed(java.awt.event.ActionEvent evt) {
try {
myFtf.setFormatterFactory(
new DefaultFormatterFactory(
new MaskFormatter("##.###.###/####-##")));
myFtf.setText("");
} catch (Exception e) {
e.printStackTrace();
}
}
这将清除文本字段。
祝你好运 我让它正常工作了!我所需要做的就是添加一个
myFtf.setValue(null);
设置新的格式化程序工厂后
myFtf.setText(“”
未按预期工作,但这是一个近景!:-) 在第二个场景中,您期望得到什么结果?与第一个相同?@user1803551是的,清除了没有输入的框并更正了mask谢谢你的答案,但不幸的是我仍然得到了相同的行为。