- 所有已实现的接口:
-
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
ConstructorsConstructorDescription创建一个未指定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设置规定可编辑和显示的合法值的格式。voidsetMaximum(Comparable<?> max) 设置最大允许值。voidsetMinimum(Comparable<?> minimum) 设置最小允许值。stringToValue(String text) 返回Stringtext的Object表示。valueToString(Object value) 返回value的Object表示的字符串表示。Methods declared in class javax.swing.text.DefaultFormatter
getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClassMethods 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上安装的操作数组
-