Java JFormattedTextField获取不带掩码的值

Java JFormattedTextField获取不带掩码的值,java,swing,mask,jformattedtextfield,Java,Swing,Mask,Jformattedtextfield,我已经在java中将掩码设置为JFormattedTextField 像这样: MaskFormatter mf1 = new MaskFormatter("#.## mmol/g"); mf1.setValueContainsLiteralCharacters(false); mf1.setPlaceholderCharacter('_'); JFormattedTextField field = new JFormattedTextField(mf1); 一旦字段显示在框架中,在我在其中写

我已经在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()
会有用的。如果你不尽快得到帮助,考虑创建和发布一个你把代码浓缩到最小的位,它仍然编译和运行,没有外部依赖关系(比如需要链接到一个数据库或图像),没有额外的与你的问题不相关的代码,但仍然显示出你的问题。我使用了getValue()及其返回的空字符串……我知道——我确实读过你的帖子。同样,它应该是有效的,如果没有什么问题的话。再次,请考虑张贴A,以便我们可以测试和修改您的代码,并看到我们自己的问题。同样,我们不希望看到您的整个程序,而是希望看到一个运行并向我们显示您的问题的最小程序。注意程序应该足够小,可以在这里发布,而不是在链接中发布。祝你好运。@hoverfullofeels好的,我为你编辑了这篇博文。我知道
getValue()
应该行得通。我认为
getValue()
应该行得通。如果你不尽快得到帮助,考虑创建和发布一个你把代码浓缩到最小的位,它仍然编译和运行,没有外部依赖关系(比如需要链接到一个数据库或图像),没有额外的与你的问题不相关的代码,但仍然显示出你的问题。我使用了getValue()及其返回的空字符串……我知道——我确实读过你的帖子。同样,它应该是有效的,如果没有什么问题的话。再次,请考虑张贴A,以便我们可以测试和修改您的代码,并看到我们自己的问题。同样,我们不希望看到您的整个程序,而是希望看到一个运行并向我们显示您的问题的最小程序。注意程序应该足够小,可以在这里发布,而不是在链接中发布。祝你好运。@hoverfullofeels好的,我为你编辑了这篇博文。我知道
getValue()
应该可以工作。
        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);