我有一个MaskFormatter和Jformattedtextfield .The代码
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);我已经向jformattedTextfield.On添加了掩蔽程序,单击了一个按钮,我试图为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),在本例中,它显示在字段中,但没有掩蔽程序。
如何显示与掩码一起的值。
发布于 2015-08-17 09:08:40
这对我来说很管用:
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-__-__-__-__-__-__-__-__-__-__-__-__-__发布于 2015-08-17 09:10:35
在我看来,您正在尝试输入字段无法处理的值。您需要找到使您的值符合您想要的格式的方法。那就祝你好运。
这个对我有用
public class FormattedTextFieldTest {
public static void main(String[] args) {
try {
JFrame frame = new JFrame();
JPanel contentPane = new JPanel(); // default flow layout
frame.setContentPane(contentPane);
MaskFormatter mk = new MaskFormatter("**-**-**-**-**-**-**-**-**-**-**-**-**-**-**");
JFormattedTextField field = new JFormattedTextField(mk);
contentPane.add(field);
frame.pack();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
// Doesnt work
//field.setValue("1E0234");
//field.setValue("ZZ99ZZ99ZZ99ZZ99ZZ99ZZ99ZZ99");
// Works for me
field.setValue("1E-02-34");
//field.setValue("ZZ-99-ZZ-99-ZZ-99-ZZ-99-ZZ-99-ZZ-99-ZZ-99");
} catch (Exception e) {
e.printStackTrace();
}
}
}(Postdata)我注意到已经有this answer (它得到了所有的荣誉)。显然,两者都提供了工作代码,而我的则显然是后验的。我为什么要留着它?
https://stackoverflow.com/questions/32045576
复制相似问题