我有一个MaskFormatter和Jformattedtextfield。的代码是
try {
mk = new MaskFormatter("**-**-**-**-**-**-**-**-**-**-**-**-**-**-**");
mk.setPlaceholderCharacter('_');
} catch(ParseException e) {
e.printStackTrace();
}
format1=new JFormattedTextField(mk);
format1.setBounds(170, 80, 280,25);
format1.setFont(new Font("serif",Font.PLAIN,13));
commandpanel.add(format1);
我已将maskformatter添加到jformattedTextfield。单击按钮时,我试图将值设置为format1,但format1字段中未显示任何内容。
这是设置值的代码
// value may be 1E0234
String value=hashmap1.get("Command 1").substring(hashmap1.get("Command 1").lastIndexOf("-")+2, hashmap1.get("Command 1").length());
format1.setValue(value);
我也尝试过使用format1.setText(value),在这种情况下,它显示在字段中,但没有maskformatter。
我如何显示该值和掩码。
最佳答案
这对我有用:
public class MyJFrame extends JFrame {
MyJFrame() {
try {
MaskFormatter mk = null;
try {
mk = new MaskFormatter("**-**-**-**-**-**-**-**-**-**-**-**-**-**-**");
mk.setPlaceholderCharacter('_');
} catch (ParseException e) {
e.printStackTrace();
}
JFormattedTextField format1 = new JFormattedTextField(mk);
format1.setBounds(170, 80, 280, 25);
format1.setFont(new Font("serif", Font.PLAIN, 13));
String value = "ZZ-99-ZZ-99-ZZ-99-ZZ-99-ZZ-99-ZZ-99-ZZ-99-ZZ";//hashmap1.get("Command 1").substring(hashmap1.get("Command 1").lastIndexOf("-")+2, hashmap1.get("Command 1").length());
String display = mk.valueToString(value);
System.out.println("display = " + display);
format1.setValue(value);
add(format1);
pack();
} catch (ParseException ex) {
Logger.getLogger(MyJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MyJFrame().setVisible(true);
}
});
}
}
如果值是“ zz-99”,则显示
zz-99-__-__-__-__-__-__-__-__-__-__-__-__-__