Module java.desktop
Package javax.swing

Class JFormattedTextField.AbstractFormatter

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。

子类必须重写转换方法stringToValuevalueToString。可选地,它们可以重写getActionsgetNavigationFiltergetDocumentFilter以限制JFormattedTextField的特定方式。

允许JFormattedTextField处于临时无效状态的子类应在适当时刻调用setEditValid

自版本:
1.4
  • Constructor Details

    • AbstractFormatter

      protected AbstractFormatter()
      子类调用的构造函数。
  • Method Details

    • install

      public void install(JFormattedTextField ftf)
      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上安装的DocumentFilterNavigationFilter和其他Action
    • stringToValue

      public abstract Object stringToValue(String text) throws ParseException
      解析text并返回任意对象。某些格式化程序可能返回null。
      参数:
      text - 要转换的字符串
      返回:
      文本的对象表示
      抛出:
      ParseException - 如果转换中出现错误
    • valueToString

      public abstract String valueToString(Object value) throws ParseException
      返回value的显示字符串值。
      参数:
      value - 要转换的值
      返回:
      值的字符串表示
      抛出:
      ParseException - 如果转换中出现错误
    • getFormattedTextField

      protected JFormattedTextField getFormattedTextField()
      返回当前安装了AbstractFormatterJFormattedTextField
      返回:
      JFormattedTextField的格式化对象。
    • invalidEdit

      protected void invalidEdit()
      当用户键入无效字符时应调用此方法。这会将调用转发给当前的JFormattedTextField。
    • setEditValid

      protected void setEditValid(boolean valid)
      调用此方法以更新JFormattedTextFieldeditValid属性。如果您强制执行策略,使JFormattedTextField始终处于有效状态,则永远不需要调用此方法。
      参数:
      valid - JFormattedTextField的有效状态
    • getActions

      protected Action[] getActions()
      如果要提供自定义的Action集,请创建子类并重写此方法。 install将这些安装到JFormattedTextFieldActionMap中。
      返回:
      要安装在JFormattedTextField上的Action数组
    • getDocumentFilter

      protected DocumentFilter getDocumentFilter()
      如果要提供DocumentFilter以限制输入,请创建子类并重写此方法。 install将返回的值安装到JFormattedTextField上。
      实现要求:
      默认实现返回null
      返回:
      用于限制编辑的DocumentFilter
    • getNavigationFilter

      protected NavigationFilter getNavigationFilter()
      如果要提供过滤器以限制用户可以导航到的位置,请创建子类并重写此方法。 install将返回的值安装到JFormattedTextField上。
      实现要求:
      默认实现返回null
      返回:
      用于限制导航的NavigationFilter
    • clone

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