java.lang.Object
javax.swing.JFormattedTextField.AbstractFormatter
- 所有已实现的接口:
-
Serializable
- 直接已知子类:
-
DefaultFormatter
- 封装类:
-
JFormattedTextField
public abstract static class JFormattedTextField.AbstractFormatter extends Object implements Serializable
AbstractFormatter
的实例被JFormattedTextField
用于处理从对象到字符串的转换,以及从字符串到对象的转换。 AbstractFormatter
还可以强制执行编辑策略、导航策略,或以任何方式操作JFormattedTextField
,以实施所需的策略。
AbstractFormatter
一次只能在一个JFormattedTextField
中处于活动状态。当JFormattedTextField
准备好使用它时,会调用install
,然后在完成后调用uninstall
。希望安装附加状态的子类应该重写install
并适当地调用super。
子类必须重写转换方法stringToValue
和valueToString
。可选地,它们可以重写getActions
、getNavigationFilter
和getDocumentFilter
以限制JFormattedTextField
的特定方式。
允许JFormattedTextField
处于临时无效状态的子类应在适当时刻调用setEditValid
。
- 自版本:
- 1.4
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected Object
clone()
克隆AbstractFormatter
。protected Action[]
如果要提供自定义的Action
集,请创建子类并重写此方法。protected DocumentFilter
如果要提供DocumentFilter
以限制输入,请创建子类并重写此方法。protected JFormattedTextField
返回当前安装了AbstractFormatter
的JFormattedTextField
。protected NavigationFilter
如果要提供一个过滤器以限制用户可以导航到的位置,请创建子类并重写此方法。void
将AbstractFormatter
安装到特定的JFormattedTextField
上。protected void
当用户键入无效字符时应调用此方法。protected void
setEditValid
(boolean valid) 调用此方法以更新JFormattedTextField
的editValid
属性。abstract Object
stringToValue
(String text) 解析text
并返回任意对象。void
卸载AbstractFormatter
可能已安装在JFormattedTextField
上的任何状态。abstract String
valueToString
(Object value) 返回value
的显示字符串值。
-
Constructor Details
-
AbstractFormatter
protected AbstractFormatter()子类调用的构造函数。
-
-
Method Details
-
install
将AbstractFormatter
安装到特定的JFormattedTextField
上。这将调用valueToString
将当前值从JFormattedTextField
转换为字符串。然后,将从getActions
返回的Action
、从getDocumentFilter
返回的DocumentFilter
以及从getNavigationFilter
返回的NavigationFilter
安装到JFormattedTextField
上。子类通常只需要在需要在
JFormattedTextField
上安装附加侦听器时重写此方法。如果在将当前值转换为字符串时出现
ParseException
,则将文本设置为空字符串,并将JFormattedTextField
标记为处于无效状态。虽然这是一个公共方法,但通常只对
JFormattedTextField
的子类有用。在值更改或内部状态更改时,JFormattedTextField
会在适当的时候调用此方法。只有在您正在对JFormattedTextField
进行子类化并在不同时间安装/卸载AbstractFormatter
时才需要自行调用此方法。- 参数:
-
ftf
- 要为其格式化的JFormattedTextField,可以为null表示从当前JFormattedTextField卸载。
-
uninstall
public void uninstall()卸载AbstractFormatter
可能已安装在JFormattedTextField
上的任何状态。这将重置JFormattedTextField
上安装的DocumentFilter
、NavigationFilter
和其他Action
。 -
stringToValue
解析text
并返回任意对象。某些格式化程序可能返回null。- 参数:
-
text
- 要转换的字符串 - 返回:
- 文本的对象表示
- 抛出:
-
ParseException
- 如果转换中出现错误
-
valueToString
返回value
的显示字符串值。- 参数:
-
value
- 要转换的值 - 返回:
- 值的字符串表示
- 抛出:
-
ParseException
- 如果转换中出现错误
-
getFormattedTextField
返回当前安装了AbstractFormatter
的JFormattedTextField
。- 返回:
- JFormattedTextField的格式化对象。
-
invalidEdit
protected void invalidEdit()当用户键入无效字符时应调用此方法。这会将调用转发给当前的JFormattedTextField。 -
setEditValid
protected void setEditValid(boolean valid) 调用此方法以更新JFormattedTextField
的editValid
属性。如果您强制执行策略,使JFormattedTextField
始终处于有效状态,则永远不需要调用此方法。- 参数:
-
valid
- JFormattedTextField的有效状态
-
getActions
如果要提供自定义的Action
集,请创建子类并重写此方法。install
将这些安装到JFormattedTextField
的ActionMap
中。- 返回:
- 要安装在JFormattedTextField上的Action数组
-
getDocumentFilter
如果要提供DocumentFilter
以限制输入,请创建子类并重写此方法。install
将返回的值安装到JFormattedTextField
上。- 实现要求:
-
默认实现返回
null
。 - 返回:
- 用于限制编辑的DocumentFilter
-
clone
克隆AbstractFormatter
。返回的实例与JFormattedTextField
无关联。- 覆盖:
-
clone
在类Object
中 - 返回:
- AbstractFormatter的副本
- 抛出:
-
CloneNotSupportedException
- 如果对象的类不支持Cloneable
接口。重写clone
方法的子类也可以抛出此异常,以指示无法克隆实例。 - 参见:
-