I am finding it hard to clear the value of JFormattedTextField
s. 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)
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,
The reason for the behavior you are seeing is that a JFormattedTextField
reverts to the last valid value on focusLost
and on commit
. Typically your code should interact with such a field using the getter and setter for the value
, and not for text
as with a regular JTextComponent
.
So the solution is setting a value which is formatted by the formatter by an empty String.
Consult the tutorial for more information.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With