public class InternationalFormatter extends DefaultFormatter
InternationalFormatter
extends DefaultFormatter
,
using an instance of java.text.Format
to handle the
conversion to a String, and the conversion from a String.
If getAllowsInvalid()
is false, this will ask the
Format
to format the current text on every edit.
You can specify a minimum and maximum value by way of the
setMinimum
and setMaximum
methods. In order
for this to work the values returned from stringToValue
must be
comparable to the min/max values by way of the Comparable
interface.
Be careful how you configure the Format
and the
InternationalFormatter
, as it is possible to create a
situation where certain values can not be input. Consider the date
format 'M/d/yy', an InternationalFormatter
that is always
valid (setAllowsInvalid(false)
), is in overwrite mode
(setOverwriteMode(true)
) and the date 7/1/99. In this
case the user will not be able to enter a two digit month or day of
month. To avoid this, the format should be 'MM/dd/yy'.
If InternationalFormatter
is configured to only allow valid
values (setAllowsInvalid(false)
), every valid edit will result
in the text of the JFormattedTextField
being completely reset
from the Format
.
The cursor position will also be adjusted as literal characters are
added/removed from the resulting String.
InternationalFormatter
's behavior of
stringToValue
is slightly different than that of
DefaultTextFormatter
, it does the following:
parseObject
is invoked on the Format
specified by setFormat
setValueClass
),
supers implementation is invoked to convert the value returned
from parseObject
to the appropriate class.
ParseException
has not been thrown, and the value
is outside the min/max a ParseException
is thrown.
InternationalFormatter
implements stringToValue
in this manner so that you can specify an alternate Class than
Format
may return.
Warning:
Serialized objects of this class will not be compatible with
future Swing releases. The current serialization support is
appropriate for short term storage or RMI between applications running
the same version of Swing. As of 1.4, support for long term storage
of all JavaBeans™
has been added to the java.beans
package.
Please see XMLEncoder
.
Format
,
Comparable
Constructor and Description |
---|
InternationalFormatter()
Creates an
InternationalFormatter with no
Format specified. |
InternationalFormatter(Format format)
Creates an
InternationalFormatter with the specified
Format instance. |
Modifier and Type | Method and Description |
---|---|
Object |
clone()
Creates a copy of the DefaultFormatter.
|
protected Action[] |
getActions()
If
getSupportsIncrement returns true, this returns
two Actions suitable for incrementing/decrementing the value. |
Format.Field[] |
getFields(int offset)
Returns the
Format.Field constants associated with
the text at offset . |
Format |
getFormat()
Returns the format that dictates the legal values that can be edited
and displayed.
|
Comparable |
getMaximum()
Returns the maximum permissible value.
|
Comparable |
getMinimum()
Returns the minimum permissible value.
|
void |
install(JFormattedTextField ftf)
Installs the
DefaultFormatter onto a particular
JFormattedTextField . |
void |
setFormat(Format format)
Sets the format that dictates the legal values that can be edited
and displayed.
|
void |
setMaximum(Comparable max)
Sets the maximum permissible value.
|
void |
setMinimum(Comparable minimum)
Sets the minimum permissible value.
|
Object |
stringToValue(String text)
Returns the
Object representation of the
String text . |
String |
valueToString(Object value)
Returns a String representation of the Object
value . |
getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClass
getFormattedTextField, invalidEdit, setEditValid, uninstall
public InternationalFormatter()
InternationalFormatter
with no
Format
specified.public InternationalFormatter(Format format)
InternationalFormatter
with the specified
Format
instance.format
- Format instance used for converting from/to Stringspublic void setFormat(Format format)
format
- Format
instance used for converting
from/to Stringspublic Format getFormat()
public void setMinimum(Comparable minimum)
valueClass
has
not been specified, and minimum
is non null, the
valueClass
will be set to that of the class of
minimum
.minimum
- Minimum legal value that can be inputDefaultFormatter.setValueClass(java.lang.Class<?>)
public Comparable getMinimum()
public void setMaximum(Comparable max)
valueClass
has
not been specified, and max
is non null, the
valueClass
will be set to that of the class of
max
.max
- Maximum legal value that can be inputDefaultFormatter.setValueClass(java.lang.Class<?>)
public Comparable getMaximum()
public void install(JFormattedTextField ftf)
DefaultFormatter
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.
install
in class DefaultFormatter
ftf
- JFormattedTextField to format for, may be null indicating
uninstall from current JFormattedTextField.public String valueToString(Object value) throws ParseException
value
.
This invokes format
on the current Format
.valueToString
in class DefaultFormatter
value
- Value to convertParseException
- if there is an error in the conversionpublic Object stringToValue(String text) throws ParseException
Object
representation of the
String
text
.stringToValue
in class DefaultFormatter
text
- String
to convertObject
representation of textParseException
- if there is an error in the conversionpublic Format.Field[] getFields(int offset)
Format.Field
constants associated with
the text at offset
. If offset
is not
a valid location into the current text, this will return an
empty array.offset
- offset into text to be examinedpublic Object clone() throws CloneNotSupportedException
clone
in class DefaultFormatter
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
protected Action[] getActions()
getSupportsIncrement
returns true, this returns
two Actions suitable for incrementing/decrementing the value.getActions
in class JFormattedTextField.AbstractFormatter
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, 2017, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.