java.lang.Object javax.swing.JFormattedTextField.AbstractFormatter javax.swing.text.DefaultFormatter javax.swing.text.InternationalFormatter
public class InternationalFormatter
InternationalFormatter
扩展 DefaultFormatter
,使用 java.text.Format
的实例处理往返于 String 的转换。
如果 getAllowsInvalid()
为 false,这将要求 Format
在每次编辑时格式化当前文本。
可以通过 setMinimum
和 setMaximum
方法指定最小值和最大值。为使此值生效,必须比较 stringToValue
返回的值和通过 Comparable
接口得到的最小值/最大值。
配置 Format
和 InternationalFormatter
时一定要仔细,因为有可能造成某些值无法输入的情形。假定日期格式 'M/d/yy'(一种由 setAllowsInvalid(false)
决定总是有效的 InternationalFormatter
)处于改写模式 (setOverwriteMode(true)
) 且日期为 7/1/99。在此情况下,用户将不能输入两位数月份或某月的两位数日期。要避免此现象,该格式应该为 'MM/dd/yy'。
如果 InternationalFormatter
配置为只允许有效值 (setAllowsInvalid(false)
),则每次有效编辑都会导致 JFormattedTextField
的文本根据 Format
全部重新设置。光标位置也将随着对结果 String 的字面值字符的添加/删除而调整。
InternationalFormatter
的 stringToValue
行为与 DefaultTextFormatter
稍有不同,它可以执行以下操作:
setFormat
指定的 Format
上调用 parseObject
setValueClass
),则会调用超类实现,以便将 parseObject
返回的值转换为适当的类。 ParseException
,并且该值不在最小值/最大值之间,则抛出 ParseException
。 InternationalFormatter
以此方式实现
stringToValue
,所以可以指定一个
Format
可能返回的替代 Class。
警告:此类的已序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储或运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
Format
,
Comparable
构造方法摘要 | |
---|---|
InternationalFormatter() 创建一个不带指定 Format 的 InternationalFormatter 。 |
|
InternationalFormatter(Format format) 创建一个具有指定 Format 实例的 InternationalFormatter 。 |
方法摘要 | |
---|---|
Object |
clone() 创建该 DefaultFormatter 的一个副本。 |
protected Action[] |
getActions() 如果 getSupportsIncrement 返回 true,则这将返回两个适合增加/减少该值的 Action。 |
Format.Field[] |
getFields(int offset) 返回与 offset 处的文本相关的 Format.Field 常量。 |
Format |
getFormat() 返回指示可以编辑和显示的合法值的格式。 |
Comparable |
getMaximum() 返回最大允许值。 |
Comparable |
getMinimum() 返回最小允许值。 |
void |
install(JFormattedTextField ftf) 将 DefaultFormatter 安装到特定的 JFormattedTextField 上。 |
void |
setFormat(Format format) 设置指示可以编辑和显示的合法值的格式。 |
void |
setMaximum(Comparable max) 设置最大允许值。 |
void |
setMinimum(Comparable minimum) 设置最小允许值。 |
Object |
stringToValue(String text) 返回 String text 的 Object 表示形式。 |
String |
valueToString(Object value) 返回 Object value 的 String 表示形式。 |
从类 javax.swing.JFormattedTextField.AbstractFormatter 继承的方法 |
---|
getFormattedTextField, invalidEdit, setEditValid, uninstall |
从类 java.lang.Object 继承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public InternationalFormatter()
Format
的
InternationalFormatter
。
public InternationalFormatter(Format format)
Format
实例的
InternationalFormatter
。
format
- 用于往返于 String 转换的 Format 实例
方法详细信息 |
---|
public void setFormat(Format format)
format
- 用于往返 String 转换的
Format
实例
public Format getFormat()
public void setMinimum(Comparable minimum)
valueClass
,且
minimum
为非 null,则
valueClass
将被设置为
minimum
类的值类。
minimum
- 可以输入的最小合法值
DefaultFormatter.setValueClass(java.lang.Class
)
public Comparable getMinimum()
public void setMaximum(Comparable max)
valueClass
,且
max
为非 null,则将
valueClass
设置为
max
类的值。
max
- 可以输入的最大合法值
DefaultFormatter.setValueClass(java.lang.Class
)
public Comparable getMaximum()
public void install(JFormattedTextField ftf)
DefaultFormatter
安装到特定的
JFormattedTextField
上。这将调用
valueToString
,将
JFormattedTextField
中的当前值转换为 String。此方法稍后将会将
getActions
返回的
Action
、
getDocumentFilter
返回的
DocumentFilter
和
getNavigationFilter
返回的
NavigationFilter
安装到
JFormattedTextField
上。
如果子类希望在 JFormattedTextField
上安装其他侦听器,则通常只需要重写此方法。
如果在将当前值转换为 String 时存在 ParseException
,则这会将文本设置为空 String,并将 JFormattedTextField
标记为正处在无效状态。
尽管这是一个公共方法,但通常仅供 JFormattedTextField
的子类使用。当值发生更改,或内部状态发生更改时,JFormattedTextField
将在适当的时候调用此方法。
DefaultFormatter
中的
install
ftf
- 要格式化的 JFormattedTextField,可能为 null,指示未从当前的 JFormattedTextField 安装。
public String valueToString(Object value) throws ParseException
value
的 String 表示形式。此方法会在当前
Format
上调用
format
。
DefaultFormatter
中的
valueToString
value
- 要转换的值
ParseException
- 如果在转换时发生错误
public Object stringToValue(String text) throws ParseException
String
text
的
Object
表示形式。
DefaultFormatter
中的
stringToValue
text
- 要转换的
String
Object
表示形式
ParseException
- 如果转换时发生错误
public Format.Field[] getFields(int offset)
offset
处的文本相关的
Format.Field
常量。如果
offset
不是当前文本中的有效位置,这将返回一个空数组。
offset
- 要检查文本的偏移量
public Object clone() throws CloneNotSupportedException
DefaultFormatter
中的
clone
CloneNotSupportedException
- 如果对象的类不支持
Cloneable
接口,则重写
clone
方法的子类也会抛出此异常,以指示无法复制某个实例。
Cloneable
protected Action[] getActions()
getSupportsIncrement
返回 true,则这将返回两个适合增加/减少该值的 Action。