JFormattedTextField获取没有掩码的值

时间:2016-04-17 17:15:54

标签: java swing mask jformattedtextfield

我在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);

非常感谢。

0 个答案:

没有答案