JavaTM Platform
Standard Ed. 6

javax.swing.text
类 InternationalFormatter

java.lang.Object
  继承者 javax.swing.JFormattedTextField.AbstractFormatter
      继承者 javax.swing.text.DefaultFormatter
          继承者 javax.swing.text.InternationalFormatter
所有已实现的接口:
Serializable, Cloneable
直接已知子类:
DateFormatter, NumberFormatter

public class InternationalFormatter
extends DefaultFormatter

InternationalFormatter 扩展 DefaultFormatter,使用 java.text.Format 的实例处理往返于 String 的转换。

如果 getAllowsInvalid() 为 false,这将要求 Format 在每次编辑时格式化当前文本。

可以通过 setMinimumsetMaximum 方法指定最小值和最大值。为使此值生效,必须比较 stringToValue 返回的值和通过 Comparable 接口得到的最小值/最大值。

配置 FormatInternationalFormatter 时一定要仔细,因为有可能造成某些值无法输入的情形。假定日期格式 'M/d/yy'(一种由 setAllowsInvalid(false) 决定总是有效的 InternationalFormatter)处于改写模式 (setOverwriteMode(true)) 且日期为 7/1/99。在此情况下,用户将不能输入两位数月份或某月的两位数日期。要避免此现象,该格式应该为 'MM/dd/yy'。

如果 InternationalFormatter 配置为只允许有效值 (setAllowsInvalid(false)),则每次有效编辑都会导致 JFormattedTextField 的文本根据 Format 全部重新设置。光标位置也将随着对结果 String 的字面值字符的添加/删除而调整。

InternationalFormatterstringToValue 行为与 DefaultTextFormatter 稍有不同,它可以执行以下操作:

  1. setFormat 指定的 Format 上调用 parseObject
  2. 如果针对一些值设置了某个 Class (setValueClass),则会调用超类实现,以便将 parseObject 返回的值转换为适当的类。
  3. 如果尚未抛出 ParseException,并且该值不在最小值/最大值之间,则抛出 ParseException
  4. 返回该值。
InternationalFormatter 以此方式实现 stringToValue,所以可以指定一个 Format 可能返回的替代 Class。

警告:此类的已序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储或运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder

从以下版本开始:
1.4
另请参见:
Format, Comparable

构造方法摘要
InternationalFormatter()
          创建一个不带指定 FormatInternationalFormatter
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 textObject 表示形式。
 String valueToString(Object value)
          返回 Object value 的 String 表示形式。
 
从类 javax.swing.text.DefaultFormatter 继承的方法
getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClass
 
从类 javax.swing.JFormattedTextField.AbstractFormatter 继承的方法
getFormattedTextField, invalidEdit, setEditValid, uninstall
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

InternationalFormatter

public InternationalFormatter()
创建一个不带指定 FormatInternationalFormatter


InternationalFormatter

public InternationalFormatter(Format format)
创建一个具有指定 Format 实例的 InternationalFormatter

参数:
format - 用于往返于 String 转换的 Format 实例
方法详细信息

setFormat

public void setFormat(Format format)
设置指示可以编辑和显示的合法值的格式。

参数:
format - 用于往返 String 转换的 Format 实例

getFormat

public Format getFormat()
返回指示可以编辑和显示的合法值的格式。

返回:
用于往返 String 转换的 Format 实例

setMinimum

public void setMinimum(Comparable minimum)
设置最小允许值。如果尚未指定 valueClass,且 minimum 为非 null,则 valueClass 将被设置为 minimum 类的值类。

参数:
minimum - 可以输入的最小合法值
另请参见:
DefaultFormatter.setValueClass(java.lang.Class)

getMinimum

public Comparable getMinimum()
返回最小允许值。

返回:
可以输入的最小合法值

setMaximum

public void setMaximum(Comparable max)
设置最大允许值。如果尚未指定 valueClass,且 max 为非 null,则将 valueClass 设置为 max 类的值。

参数:
max - 可以输入的最大合法值
另请参见:
DefaultFormatter.setValueClass(java.lang.Class)

getMaximum

public Comparable getMaximum()
返回最大允许值。

返回:
可以输入的最大合法值

install

public void install(JFormattedTextField ftf)
DefaultFormatter 安装到特定的 JFormattedTextField 上。这将调用 valueToString,将 JFormattedTextField 中的当前值转换为 String。此方法稍后将会将 getActions 返回的 ActiongetDocumentFilter 返回的 DocumentFiltergetNavigationFilter 返回的 NavigationFilter 安装到 JFormattedTextField 上。

如果子类希望在 JFormattedTextField 上安装其他侦听器,则通常只需要重写此方法。

如果在将当前值转换为 String 时存在 ParseException,则这会将文本设置为空 String,并将 JFormattedTextField 标记为正处在无效状态。

尽管这是一个公共方法,但通常仅供 JFormattedTextField 的子类使用。当值发生更改,或内部状态发生更改时,JFormattedTextField 将在适当的时候调用此方法。

覆盖:
DefaultFormatter 中的 install
参数:
ftf - 要格式化的 JFormattedTextField,可能为 null,指示未从当前的 JFormattedTextField 安装。

valueToString

public String valueToString(Object value)
                     throws ParseException
返回 Object value 的 String 表示形式。此方法会在当前 Format 上调用 format

覆盖:
DefaultFormatter 中的 valueToString
参数:
value - 要转换的值
返回:
值的 String 表示形式
抛出:
ParseException - 如果在转换时发生错误

stringToValue

public Object stringToValue(String text)
                     throws ParseException
返回 String textObject 表示形式。

覆盖:
DefaultFormatter 中的 stringToValue
参数:
text - 要转换的 String
返回:
文本的 Object 表示形式
抛出:
ParseException - 如果转换时发生错误

getFields

public Format.Field[] getFields(int offset)
返回与 offset 处的文本相关的 Format.Field 常量。如果 offset 不是当前文本中的有效位置,这将返回一个空数组。

参数:
offset - 要检查文本的偏移量
返回:
与给定位置的文本相关的 Format.Field 常量。

clone

public Object clone()
             throws CloneNotSupportedException
创建该 DefaultFormatter 的一个副本。

覆盖:
DefaultFormatter 中的 clone
返回:
DefaultFormatter 的副本
抛出:
CloneNotSupportedException - 如果对象的类不支持 Cloneable 接口,则重写 clone 方法的子类也会抛出此异常,以指示无法复制某个实例。
另请参见:
Cloneable

getActions

protected Action[] getActions()
如果 getSupportsIncrement 返回 true,则这将返回两个适合增加/减少该值的 Action。

覆盖:
JFormattedTextField.AbstractFormatter 中的 getActions
返回:
要在 JFormattedTextField 上安装的 Action 数组

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策