public abstract static class JFormattedTextField.AbstractFormatter extends Object implements Serializable
AbstractFormatter
are used by
JFormattedTextField
to handle the conversion both
from an Object to a String, and back from a String to an Object.
AbstractFormatter
s can also enforce editing policies,
or navigation policies, or manipulate the
JFormattedTextField
in any way it sees fit to
enforce the desired policy.
An AbstractFormatter
can only be active in
one JFormattedTextField
at a time.
JFormattedTextField
invokes
install
when it is ready to use it followed
by uninstall
when done. Subclasses
that wish to install additional state should override
install
and message super appropriately.
Subclasses must override the conversion methods
stringToValue
and valueToString
. Optionally
they can override getActions
,
getNavigationFilter
and getDocumentFilter
to restrict the JFormattedTextField
in a particular
way.
Subclasses that allow the JFormattedTextField
to be in
a temporarily invalid state should invoke setEditValid
at the appropriate times.
Constructor and Description |
---|
AbstractFormatter() |
Modifier and Type | Method and Description |
---|---|
protected Object |
clone()
Clones the
AbstractFormatter . |
protected Action[] |
getActions()
Subclass and override if you wish to provide a custom set of
Action s. |
protected DocumentFilter |
getDocumentFilter()
Subclass and override if you wish to provide a
DocumentFilter to restrict what can be input. |
protected JFormattedTextField |
getFormattedTextField()
Returns the current
JFormattedTextField the
AbstractFormatter is installed on. |
protected NavigationFilter |
getNavigationFilter()
Subclass and override if you wish to provide a filter to restrict
where the user can navigate to.
|
void |
install(JFormattedTextField ftf)
Installs the
AbstractFormatter onto a particular
JFormattedTextField . |
protected void |
invalidEdit()
This should be invoked when the user types an invalid character.
|
protected void |
setEditValid(boolean valid)
Invoke this to update the
editValid property of the
JFormattedTextField . |
abstract Object |
stringToValue(String text)
Parses
text returning an arbitrary Object. |
void |
uninstall()
Uninstalls any state the
AbstractFormatter may have
installed on the JFormattedTextField . |
abstract String |
valueToString(Object value)
Returns the string value to display for
value . |
public void install(JFormattedTextField ftf)
AbstractFormatter
onto a particular
JFormattedTextField
.
This will invoke valueToString
to convert the
current value from the JFormattedTextField
to
a String. This will then install the Action
s from
getActions
, the DocumentFilter
returned from getDocumentFilter
and the
NavigationFilter
returned from
getNavigationFilter
onto the
JFormattedTextField
.
Subclasses will typically only need to override this if they
wish to install additional listeners on the
JFormattedTextField
.
If there is a ParseException
in converting the
current value to a String, this will set the text to an empty
String, and mark the JFormattedTextField
as being
in an invalid state.
While this is a public method, this is typically only useful
for subclassers of JFormattedTextField
.
JFormattedTextField
will invoke this method at
the appropriate times when the value changes, or its internal
state changes. You will only need to invoke this yourself if
you are subclassing JFormattedTextField
and
installing/uninstalling AbstractFormatter
at a
different time than JFormattedTextField
does.
ftf
- JFormattedTextField to format for, may be null indicating
uninstall from current JFormattedTextField.public void uninstall()
AbstractFormatter
may have
installed on the JFormattedTextField
. This resets the
DocumentFilter
, NavigationFilter
and additional Action
s installed on the
JFormattedTextField
.public abstract Object stringToValue(String text) throws ParseException
text
returning an arbitrary Object. Some
formatters may return null.text
- String to convertParseException
- if there is an error in the conversionpublic abstract String valueToString(Object value) throws ParseException
value
.value
- Value to convertParseException
- if there is an error in the conversionprotected JFormattedTextField getFormattedTextField()
JFormattedTextField
the
AbstractFormatter
is installed on.protected void invalidEdit()
protected void setEditValid(boolean valid)
editValid
property of the
JFormattedTextField
. If you an enforce a policy
such that the JFormattedTextField
is always in a
valid state, you will never need to invoke this.valid
- Valid state of the JFormattedTextFieldprotected Action[] getActions()
Action
s. install
will install these
on the JFormattedTextField
's ActionMap
.protected DocumentFilter getDocumentFilter()
DocumentFilter
to restrict what can be input.
install
will install the returned value onto
the JFormattedTextField
.protected NavigationFilter getNavigationFilter()
install
will install the returned value onto
the JFormattedTextField
.protected Object clone() throws CloneNotSupportedException
AbstractFormatter
. The returned instance
is not associated with a JFormattedTextField
.clone
in class Object
CloneNotSupportedException
- if the object's class does not
support the Cloneable
interface. Subclasses
that override the clone
method can also
throw this exception to indicate that an instance cannot
be cloned.Cloneable
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2016, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.