Search code examples
javaswingjformattedtextfield

Values not clearing in JFormattedTextField


I am finding it hard to clear the value of JFormattedTextFields. How to do it?

I tried

txtJFormattedTextField.setText("");

But when focus is lost again the value that I cleared away will appear. I read the API regarding this issue.

My factory for creating JTFormattedTextFields for Date fields is below -

public static JFormattedTextField createDateField() {
        MaskFormatter maskFormatter = null;
        try {
            maskFormatter = new MaskFormatter("##/##/####");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        JFormattedTextField formattedTextField = new JFormattedTextField(
                maskFormatter);
        SwingHelper.installDateValidation((AbstractDocument) formattedTextField
                .getDocument());
        formattedTextField.setColumns(10);
        return formattedTextField;
    }

Tried the

try {
    ((JFormattedTextField) txtSigninDate).commitEdit();
} catch (ParseException e) {
    e.printStackTrace();
}

The result was an exception - below is the exception trace.

java.text.ParseException: stringToValue passed invalid value
    at javax.swing.text.MaskFormatter.stringToValue(MaskFormatter.java:456)
    at javax.swing.text.MaskFormatter.stringToValue(MaskFormatter.java:371)
    at javax.swing.JFormattedTextField.commitEdit(JFormattedTextField.java:530)
    at app.view.action.Authentication_Action.clearSigninFields(Authentication_Action.java:207)
    at app.view.action.authentication.AuthenticationCommand.decorateSignout(AuthenticationCommand.java:285)
    at app.view.action.authentication.AuthenticationCommand.executeSignin(AuthenticationCommand.java:122)
    at app.view.action.Authentication_Action$2.actionPerformed(Authentication_Action.java:292)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

Solution

  • 1.depends of used Formatter

    JFormattedTextField.setValue(0.00);
    

    2.or MaskFormatter

    JFormattedTextField.setValue(null);
    

    3.is possible to set null value for JFormattedTextField with Formatter, but I'd suggest to use proper value for concrete Formatter, e.g. for NumberFormatter to set setValue(0.00)

    4.for better help sooner post an SSCCE, otherwise your question probably isn't answerable,