我在java中为JFormattedTextField
设置了一个掩码
像这样:
MaskFormatter mf1 = new MaskFormatter("#.## mmol/g");
mf1.setValueContainsLiteralCharacters(false);
mf1.setPlaceholderCharacter('_');
JFormattedTextField field = new JFormattedTextField(mf1);
一旦字段显示在框架中,我在其中写入内容并单击“发送”后,
我正在使用getValue()
来获取该字段的文本
但它正在返回为空。
如果我使用getText()
来获取文字,我得到了
0.12 mmol/g
但我只想将012插入我的数据库......没有mmol / g和点
如果没有蒙版,我需要做什么才能获得价值...... (它不是唯一的面具。我有很多面具所以我不需要正则表达式或类似的东西......)
我的完整代码的一部分。 这是创建掩码字段的函数:
public void createTextField(String label, int xPos, int yPos, JPanel fieldset,
String val, int fontSize, String format, String fieldName, String fieldType) {
JFormattedTextField field = null;
MaskFormatter mf1 = null;
try {
JLabel fieldLabel = new JLabel(label);
fieldLabel.setFont(new Font("Arial", Font.BOLD, fontSize));
fieldLabel.setVerticalAlignment(JLabel.CENTER);
fieldLabel.setBounds(xPos, yPos, xPercent(fieldset.getWidth(), 46), fieldsHeight);
fieldset.add(fieldLabel);
switch(format) {
case "percent":
mf1 = new MaskFormatter("##%");
//mf1.setPlaceholderCharacter('');
break;
case "c":
mf1 = new MaskFormatter("## C°");
break;
case "double":
mf1 = new MaskFormatter("#.##");
break;
case "double1":
mf1 = new MaskFormatter("#.###");
break;
case "mpa":
mf1 = new MaskFormatter("## MPa");
break;
case "mpas":
mf1 = new MaskFormatter("## mPa.s");
break;
case "ppm":
mf1 = new MaskFormatter("### ppm");
break;
case "mg":
mf1 = new MaskFormatter("#.# mg KOh/g");
break;
case "gmol":
mf1 = new MaskFormatter("### g/mol");
break;
case "mmol":
mf1 = new MaskFormatter("#.## mmol/g");
break;
default:
break;
}
if(mf1 != null) {
mf1.setValueContainsLiteralCharacters(false);
mf1.setPlaceholderCharacter('_');
}
field = new JFormattedTextField(mf1);
field.setBounds(fieldLabel.getWidth() + 5 + xPos, yPos, xPercent(fieldset.getWidth(), 46), fieldsHeight);
field.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, new Color(174,174,174)));
field.setFont(new Font("Arial", Font.BOLD, fontSize));
field.setHorizontalAlignment(JTextField.CENTER);
field.setText(val);
if(format == "int") { // only numbers in the field
field.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char caracter = e.getKeyChar();
if (((caracter < '0') || (caracter > '9'))
&& (caracter != '\b')) {
e.consume();
}
}
});
}
fieldset.add(field);
} catch (ParseException e) {
e.printStackTrace();
}
formFields.put(fieldName, new formField(fieldName, field, null, null, null, mf1, fieldType));
}
这是我点击我正在使用getValue的按钮后执行的部分。在此部分之后,变量“text”的输出为空
formField field = pair.getValue();
String text = null;
if(field.textField != null)
text = (String) field.textField.getValue();
if(field.textArea != null)
text = field.textArea.getText();
if(field.select != null)
text = "" + ((comboItem) field.select.getSelectedItem()).getId();
if(field.radios != null)
text = getSelectedButtonText(field.radios);
非常感谢。