Module java.desktop
Package javax.swing.text

Class DefaultFormatter

所有已实现的接口:
Serializable, Cloneable
直接已知的子类:
InternationalFormatter, MaskFormatter

public class DefaultFormatter extends JFormattedTextField.AbstractFormatter implements Cloneable, Serializable
DefaultFormatter 格式化任意对象。通过调用 toString 方法来进行格式化。为了将值转换回字符串,您的类必须提供一个接受字符串参数的构造函数。如果找不到接受字符串的单参数构造函数,则返回的值将是传递给 stringToValue 的字符串。

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

警告: 该类的序列化对象将不兼容未来的 Swing 版本。当前的序列化支持适用于短期存储或在运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版开始,已将对所有 JavaBeans 的长期存储支持添加到 java.beans 包中。请参阅 XMLEncoder

自版本:
1.4
参见:
  • Constructor Details

    • DefaultFormatter

      public DefaultFormatter()
      创建一个 DefaultFormatter。
  • Method Details

    • install

      public void install(JFormattedTextField ftf)
      DefaultFormatter 安装到特定的 JFormattedTextField 上。这将调用 valueToString 来将当前值从 JFormattedTextField 转换为字符串。然后将从 getActions 获取的 Action、从 getDocumentFilter 返回的 DocumentFilter 和从 getNavigationFilter 返回的 NavigationFilter 安装到 JFormattedTextField 上。

      子类通常只需要在需要在 JFormattedTextField 上安装额外监听器时重写此方法。

      如果将当前值转换为字符串时出现 ParseException,则将文本设置为空字符串,并将 JFormattedTextField 标记为无效状态。

      虽然这是一个公共方法,但通常只对 JFormattedTextField 的子类有用。在值更改或内部状态更改时,JFormattedTextField 将在适当的时候调用此方法。

      覆盖:
      install 在类 JFormattedTextField.AbstractFormatter
      参数:
      ftf - 要格式化的 JFormattedTextField,可以为 null 表示从当前 JFormattedTextField 中卸载。
    • setCommitsOnValidEdit

      public void setCommitsOnValidEdit(boolean commit)
      设置编辑何时发布回到 JFormattedTextField。如果为 true,则在每次有效编辑后(任何时候编辑文本时)都会调用 commitEdit。另一方面,如果为 false,则 DefaultFormatter 不会将编辑发布回到 JFormattedTextField。因此,只有在调用 JFormattedTextField 上的 commitEdit 时,JFormattedTextField 的值才会更改,通常在按下 Enter 键或焦点离开 JFormattedTextField 时调用 commitEdit
      参数:
      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)
      设置用于创建新对象的类。如果传入的类没有接受字符串参数的单参数构造函数,则将使用字符串值。
      参数:
      valueClass - 用于从 stringToValue 构造返回值的类
    • getValueClass

      public Class<?> getValueClass()
      返回用于创建新对象的类。
      返回:
      用于从 stringToValue 构造返回值的类
    • stringToValue

      public Object stringToValue(String string) throws ParseException
      通过接受的字符串通过接受字符串参数的构造函数将其转换为 getValueClass 的实例。如果 getValueClass 返回 null,则将使用 JFormattedTextField 中当前值的类。如果这是 null,则将返回一个字符串。如果构造函数抛出异常,则将抛出 ParseException。如果没有单参数字符串构造函数,则将返回字符串。
      指定者:
      stringToValue 在类 JFormattedTextField.AbstractFormatter
      参数:
      string - 要转换的字符串
      返回:
      文本的对象表示
      抛出:
      ParseException - 如果转换中出现错误
    • valueToString

      public String valueToString(Object value) throws ParseException
      通过接受的对象通过 toString 方法将其转换为字符串。
      指定者:
      valueToString 在类 JFormattedTextField.AbstractFormatter
      参数:
      value - 要转换的值
      返回:
      值的字符串表示
      抛出:
      ParseException - 如果转换中出现错误
    • getDocumentFilter

      protected DocumentFilter getDocumentFilter()
      返回用于限制可以输入到 JFormattedTextField 中的字符的 DocumentFilter
      覆盖:
      getDocumentFilter 在类 JFormattedTextField.AbstractFormatter
      返回:
      用于限制编辑的 DocumentFilter
    • getNavigationFilter

      protected NavigationFilter getNavigationFilter()
      返回用于限制光标放置位置的 NavigationFilter
      覆盖:
      getNavigationFilter 在类 JFormattedTextField.AbstractFormatter
      返回:
      用于限制导航的 NavigationFilter
    • clone

      public Object clone() throws CloneNotSupportedException
      创建 DefaultFormatter 的副本。
      覆盖:
      clone 在类 JFormattedTextField.AbstractFormatter
      返回:
      DefaultFormatter的副本
      抛出:
      CloneNotSupportedException - 如果对象的类不支持Cloneable接口。覆盖clone方法的子类也可以抛出此异常,以指示实例无法被克隆。
      参见: