javax.swing.text

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

public class DefaultFormatter
     
extends JFormattedTextField.AbstractFormatter
implements Cloneable, Serializable

DefaultFormatter 格式化任意对象。格式化是通过调用 toString 方法完成的。为将值转换回 String,类必须提供一个采用 String 参数的构造方法。如果未发现采用 String 的单一参数构造方法,则返回值将为传入 stringToValue 的 String。

DefaultFormatter 的实例不能在 JFormattedTextField 的多个实例中使用。要获得已配置好的 DefaultFormatter 的副本,请使用 clone 方法。

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

从以下版本开始:
1.4
另请参见:
JFormattedTextField.AbstractFormatter

构造方法摘要
DefaultFormatter()
          创建 DefaultFormatter。
 
方法摘要
 Object clone()
          创建此 DefaultFormatter 的副本。
 boolean getAllowsInvalid()
          返回编辑的值是否在一段时间内允许为无效。
 boolean getCommitsOnValidEdit()
          返回何时将编辑内容发布回 JFormattedTextField
protected  DocumentFilter getDocumentFilter()
          返回用于限制放置到 JFormattedTextField 中的字符的 DocumentFilter
protected  NavigationFilter getNavigationFilter()
          返回用于限制光标放置位置的 NavigationFilter
 boolean getOverwriteMode()
          返回插入字符时的行为。
 Class<?> getValueClass()
          返回用于创建新 Objects 的类。
 void install(JFormattedTextField ftf)
          将 DefaultFormatter 安装到特定的 JFormattedTextField
 void setAllowsInvalid(boolean allowsInvalid)
          设置编辑的值在一段时间内是否允许为无效(也就是说,stringToValue 是否抛出 ParseException)。
 void setCommitsOnValidEdit(boolean commit)
          设置何时将编辑内容发布回 JFormattedTextField
 void setOverwriteMode(boolean overwriteMode)
          配置插入字符时的行为。
 void setValueClass(Class<?> valueClass)
          设置用于创建新 Objects 的类。
 Object stringToValue(String string)
          通过使用带 String 参数的构造方法将传入的 String 转换为 getValueClass 的一个实例。
 String valueToString(Object value)
          使用 toString 方法将传入的 Object 转换为 String。
 
从类 javax.swing.JFormattedTextField.AbstractFormatter 继承的方法
getActions, getFormattedTextField, invalidEdit, setEditValid, uninstall
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

DefaultFormatter

public DefaultFormatter()
创建 DefaultFormatter。

方法详细信息

install

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

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

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

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

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

setCommitsOnValidEdit

public void setCommitsOnValidEdit(boolean commit)
设置何时将编辑内容发布回 JFormattedTextField。如果为 true, commitEdit 在每次有效编辑(编辑文本的任何时间)后调用。另一方面,如果为 false,则 DefaultFormatter 不会将编辑内容发布回 JFormattedTextField。因此, JFormattedTextField 值的惟一一次改变发生的时间是,在 JFormattedTextField 上调用 commitEdit 时,通常为按下回车或当焦点离开 JFormattedTextField 时。

参数:
commit - 用于指示何时将编辑内容提交回 JTextComponent

getCommitsOnValidEdit

public boolean getCommitsOnValidEdit()
返回何时将编辑内容发布回 JFormattedTextField

返回:
如果在每次有效编辑后提交编辑,则返回 true

setOverwriteMode

public void setOverwriteMode(boolean overwriteMode)
配置插入字符时的行为。如果 overwriteMode 为 true (默认值),新字符将改写模型中现有的字符。

参数:
overwriteMode - 指示使用改写或替代模式

getOverwriteMode

public boolean getOverwriteMode()
返回插入字符时的行为。

返回:
如果新插入字符改写现有字符,则返回 true

setAllowsInvalid

public void setAllowsInvalid(boolean allowsInvalid)
设置编辑的值在一段时间内是否允许为无效(也就是说, stringToValue 是否抛出 ParseException)。允许用户临时输入一个无效值会很方便。

参数:
allowsInvalid - 用于指示编辑的值是否必须始终为有效

getAllowsInvalid

public boolean getAllowsInvalid()
返回编辑的值是否在一段时间内允许为无效。

返回:
如果编辑的值必须始终为有效,则返回 false

setValueClass

public void setValueClass(Class<?> valueClass)
设置用于创建新 Objects 的类。如果传入的类不具有采用 String 的只带一个参数的构造方法,将使用 String 值。

参数:
valueClass - 用于构造从 stringToValue 中返回的值的类

getValueClass

public Class<?> getValueClass()
返回用于创建新 Objects 的类。

返回:
用于构造从 stringToValue 中返回的值的类

stringToValue

public Object stringToValue(String string)
                     throws ParseException
通过使用带 String 参数的构造方法将传入的 String 转换为 getValueClass 的一个实例。如果 getValueClass 返回 null,将使用 JFormattedTextField 中当前值的类。如果它为 null,将返回一个 String。如果构造方法抛出异常,则会抛出 ParseException。如果没有只带一个参数的 String 构造方法,则返回 string

指定者:
JFormattedTextField.AbstractFormatter 中的 stringToValue
参数:
string - 要转换的字符串
返回:
文本的 Object 表示形式
抛出:
ParseException - 如果转换过程中出现错误

valueToString

public String valueToString(Object value)
                     throws ParseException
使用 toString 方法将传入的 Object 转换为 String。

指定者:
JFormattedTextField.AbstractFormatter 中的 valueToString
参数:
value - 要转换的值
返回:
值的 String 表示形式
抛出:
ParseException - 如果在转换时发生错误

getDocumentFilter

protected DocumentFilter getDocumentFilter()
返回用于限制放置到 JFormattedTextField 中的字符的 DocumentFilter

覆盖:
JFormattedTextField.AbstractFormatter 中的 getDocumentFilter
返回:
限制编辑的 DocumentFilter

getNavigationFilter

protected NavigationFilter getNavigationFilter()
返回用于限制光标放置位置的 NavigationFilter

覆盖:
JFormattedTextField.AbstractFormatter 中的 getNavigationFilter
返回:
限制导航的 NavigationFilter

clone

public Object clone()
             throws CloneNotSupportedException
创建此 DefaultFormatter 的副本。

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