模块  java.desktop
软件包  javax.swing.text

Class DefaultFormatter

  • 实现的所有接口
    SerializableCloneable
    已知直接子类:
    InternationalFormatterMaskFormatter

    public class DefaultFormatterextends JFormattedTextField.AbstractFormatterimplements Cloneable, Serializable
    DefaultFormatter格式化任意对象。 通过调用toString方法完成格式化。 为了将值转换回String,您的类必须提供一个带String参数的构造函数。 如果找不到带有String的单个参数构造函数,则返回的值将是传递给stringToValue的String。

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

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

    从以下版本开始:
    1.4
    另请参见:
    JFormattedTextField.AbstractFormatterSerialized Form
    • 构造方法详细信息

      • DefaultFormatter

        public DefaultFormatter()
        创建DefaultFormatter。
    • 方法详细信息

      • install

        public void install​(JFormattedTextField ftf)
        DefaultFormatter安装到特定的JFormattedTextField 这将调用valueToString将当前值从JFormattedTextField转换为String。 那么这将安装Action从s getActions ,该DocumentFilter从返回getDocumentFilterNavigationFilter从返回getNavigationFilterJFormattedTextField

        如果子类希望在JFormattedTextField上安装其他侦听器,则通常只需要覆盖它。

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

        虽然这是一种公共方法,但这通常仅适用于JFormattedTextField子类。 JFormattedTextField将在值更改或其内部状态更改的适当时间调用此方法。

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

        public void setCommitsOnValidEdit​(boolean commit)
        设置何时将编辑内容发布回JFormattedTextField 如果为true,则在每次有效编辑后调用commitEdit (任何时候编辑文本)。 另一方面,如果这是假的,则DefaultFormatter不会将编辑发布回JFormattedTextField 因此, JFormattedTextField的值将更改的唯一时间是在commitEdit上调用JFormattedTextField ,通常在按下enter或焦点离开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​(<?> valueClass)
        设置用于创建新对象的类。 如果传入的类没有带有String的单个参数构造函数,则将使用String值。
        参数
        valueClass - 用于从stringToValue构造返回值的类
      • getValueClass

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

        public Object stringToValue​(String string)                     throws ParseException
        通过带有String参数的构造函数将传入的String转换为getValueClass的实例。 如果getValueClass返回null,则将使用JFormattedTextField当前值的Class。 如果为null,则返回String。 如果构造函数抛出异常,则抛出ParseException 如果没有单个参数String构造函数,则将返回string
        Specified by:
        stringToValueJFormattedTextField.AbstractFormatter
        参数
        string - 要转换的字符串
        结果
        文本的对象表示
        异常
        ParseException - 如果转换中存在错误