- 所有已实现的接口:
-
Serializable
,Cloneable
- 直接已知的子类:
-
DateFormatter
,NumberFormatter
InternationalFormatter
扩展了DefaultFormatter
,使用java.text.Format
的实例来处理转换为字符串和从字符串转换的操作。
如果getAllowsInvalid()
为false,则在每次编辑时会要求Format
格式化当前文本。
您可以通过setMinimum
和setMaximum
方法指定最小和最大值。为使其正常工作,stringToValue
返回的值必须可以通过Comparable
接口与最小/最大值进行比较。
注意如何配置Format
和InternationalFormatter
,可能会导致某些值无法输入的情况。考虑日期格式'M/d/yy',一个始终有效的InternationalFormatter
(setAllowsInvalid(false)
),处于覆盖模式(setOverwriteMode(true)
)且日期为7/1/99的情况。在这种情况下,用户将无法输入两位数的月份或日期。为避免此问题,格式应为'MM/dd/yy'。
如果InternationalFormatter
配置为仅允许有效值(setAllowsInvalid(false)
),每次有效编辑都将导致JFormattedTextField
的文本完全重置为Format
的内容。光标位置也将随着从结果字符串中添加/删除文字而调整。
InternationalFormatter
的stringToValue
行为与DefaultTextFormatter
略有不同,它执行以下操作:
- 在由
setFormat
指定的Format
上调用parseObject
- 如果为值设置了一个类(
setValueClass
),则调用超类实现以将从parseObject
返回的值转换为适当的类。 - 如果未抛出
ParseException
,且值在最小/最大值之外,则抛出ParseException
。 - 返回该值。
InternationalFormatter
以这种方式实现stringToValue
,以便您可以指定一个与Format
返回的不同类别。
警告: 该类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同Swing版本的应用程序之间的RMI。从1.4开始,已将对所有JavaBeans进行长期存储的支持添加到java.beans
包中。请参见XMLEncoder
。
- 自版本:
- 1.4
- 参见:
-
Constructor Summary
ConstructorDescription创建一个未指定Format
的InternationalFormatter
。InternationalFormatter
(Format format) 使用指定的Format
实例创建一个InternationalFormatter
。 -
Method Summary
Modifier and TypeMethodDescriptionclone()
创建DefaultFormatter
的副本。protected Action[]
如果getSupportsIncrement
返回true,则返回两个适用于增加/减少值的操作。getFields
(int offset) 返回与offset
处文本相关联的Format.Field
常量。返回规定可编辑和显示的合法值的格式。Comparable
<?> 返回最大允许值。Comparable
<?> 返回最小允许值。void
将DefaultFormatter
安装到特定的JFormattedTextField
上。void
设置规定可编辑和显示的合法值的格式。void
setMaximum
(Comparable<?> max) 设置最大允许值。void
setMinimum
(Comparable<?> minimum) 设置最小允许值。stringToValue
(String text) 返回String
text
的Object
表示。valueToString
(Object value) 返回value
的Object
表示的字符串表示。Methods declared in class javax.swing.text.DefaultFormatter
getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClass
Methods declared in class javax.swing.JFormattedTextField.AbstractFormatter
getFormattedTextField, invalidEdit, setEditValid, uninstall
-
Constructor Details
-
InternationalFormatter
public InternationalFormatter()创建一个未指定Format
的InternationalFormatter
。 -
InternationalFormatter
使用指定的Format
实例创建一个InternationalFormatter
。- 参数:
-
format
- 用于转换为/从字符串的Format
实例
-
-
Method Details
-
setFormat
设置规定可编辑和显示的合法值的格式。- 参数:
-
format
- 用于转换为/从字符串的Format
实例
-
getFormat
返回规定可编辑和显示的合法值的格式。- 返回:
-
用于转换为/从字符串的
Format
实例
-
setMinimum
设置最小允许值。如果未指定valueClass
,且minimum
非空,则valueClass
将设置为minimum
的类的类。- 参数:
-
minimum
- 可输入的最小合法值 - 参见:
-
getMinimum
返回最小允许值。- 返回:
- 可输入的最小合法值
-
setMaximum
设置最大允许值。如果未指定valueClass
,且max
非空,则valueClass
将设置为max
的类的类。- 参数:
-
max
- 可输入的最大合法值 - 参见:
-
getMaximum
返回最大允许值。- 返回:
- 可输入的最大合法值
-
install
将DefaultFormatter
安装到特定的JFormattedTextField
上。这将调用valueToString
将当前值从JFormattedTextField
转换为字符串。然后,将getActions
返回的Action
、getDocumentFilter
返回的DocumentFilter
和getNavigationFilter
返回的NavigationFilter
安装到JFormattedTextField
上。子类通常只需要在希望在
JFormattedTextField
上安装其他侦听器时重写此方法。如果在将当前值转换为字符串时出现
ParseException
,则将文本设置为空字符串,并将JFormattedTextField
标记为无效状态。虽然这是一个公共方法,但通常只对
JFormattedTextField
的子类有用。当值发生变化或其内部状态发生变化时,JFormattedTextField
将在适当的时候调用此方法。- 覆盖:
-
install
在类DefaultFormatter
中 - 参数:
-
ftf
- 要格式化的JFormattedTextField
,可以为null表示从当前JFormattedTextField
中卸载
-
valueToString
返回value
的String
表示。这会在当前Format
上调用format
。- 覆盖:
-
valueToString
在类DefaultFormatter
中 - 参数:
-
value
- 要转换的值 - 返回:
- 值的字符串表示
- 抛出:
-
ParseException
- 如果转换中出现错误
-
stringToValue
返回text
的Object
表示。- 覆盖:
-
stringToValue
在类DefaultFormatter
中 - 参数:
-
text
- 要转换的String
- 返回:
-
text
的Object
表示 - 抛出:
-
ParseException
- 如果转换中出现错误
-
getFields
返回与offset
处文本相关联的Format.Field
常量。如果offset
不是当前文本的有效位置,则将返回一个空数组。- 参数:
-
offset
- 要检查的文本偏移量 - 返回:
-
与给定位置的文本相关联的
Format.Field
常量
-
clone
创建DefaultFormatter
的副本。- 覆盖:
-
clone
在类DefaultFormatter
中 - 返回:
- DefaultFormatter的副本
- 抛出:
-
CloneNotSupportedException
- 如果对象的类不支持Cloneable
接口。覆盖clone
方法的子类也可以抛出此异常,以指示实例无法被克隆。 - 参见:
-
getActions
如果getSupportsIncrement
返回true,则返回两个适用于增加/减少值的操作。- 覆盖:
-
getActions
在类JFormattedTextField.AbstractFormatter
中 - 返回:
- 在JFormattedTextField上安装的操作数组
-