Module  java.desktop
软件包  javax.swing.text

Class InternationalFormatter

  • All Implemented Interfaces:
    SerializableCloneable
    已知直接子类:
    DateFormatterNumberFormatter


    public class InternationalFormatter
    extends DefaultFormatter
    InternationalFormatter延伸DefaultFormatter ,使用的实例java.text.Format来处理转换为字符串,并从字符串的转换。

    如果getAllowsInvalid()为假,则会在Format格式化每个编辑的当前文本。

    您可以通过setMinimumsetMaximum方法指定最小值和最大值。 为了使其工作,从stringToValue返回的值必须通过Comparable接口与最小/最大值相当。

    请注意如何配置FormatInternationalFormatter ,因为可能会创建无法输入某些值的情况。 考虑日期格式“M / D / Y-Y”,一个InternationalFormatter ,始终是有效的( setAllowsInvalid(false) ),是在覆盖模式( setOverwriteMode(true) )和日期99年7月1日。 在这种情况下,用户将无法输入两位数字的月份或月份。 为避免这种情况,格式应为“MM / dd / yy”。

    如果InternationalFormatter被配置为只允许有效值( setAllowsInvalid(false) ),每一个有效的编辑将导致文本JFormattedTextField是从完全复位Format 光标位置也将被调整为文字字符从结果字符串中添加/删除。

    InternationalFormatter的“行为stringToValue比略有不同DefaultTextFormatter ,它执行以下操作:

    1. parseObject被引用Format指定setFormat
    2. 如果已经为值设置了一个类( setValueClass ),则调用实现方法将从parseObject返回的值转换为适当的类。
    3. 如果一个ParseException没有抛出,并且该值超出了最小/最大值,则抛出一个ParseException
    4. 返回值。
    InternationalFormatter以这种方式实现了stringToValue ,这样你可以指定一个可以返回的替代类Format

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

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

      • InternationalFormatter

        public InternationalFormatter​()
        创建一个 InternationalFormatter ,不指定 Format
      • InternationalFormatter

        public InternationalFormatter​(Format format)
        创建一个 InternationalFormatter与指定的 Format实例。
        参数
        format - 用于从/转换到字符串的格式化实例
    • 方法详细信息

      • setFormat

        public void setFormat​(Format format)
        设置指定可编辑和显示的合法值的格式。
        参数
        format - Format用于从/转换到字符串的实例
      • getFormat

        public Format getFormat​()
        返回指定可编辑和显示的合法值的格式。
        结果
        用于从/转换到字符串的格式实例
      • getMinimum

        public Comparable<?> getMinimum​()
        返回最小允许值。
        结果
        可输入的最低法定价值
      • getMaximum

        public Comparable<?> getMaximum​()
        返回最大允许值。
        结果
        可输入的最大合法值
      • install

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

        子类通常只需要覆盖这个,如果他们希望在JFormattedTextField上安装其他监听JFormattedTextField

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

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

        重写:
        installDefaultFormatter
        参数
        ftf - JFormattedTextField格式化,可能为空,表示从当前JFormattedTextField卸载。
      • getFields

        public Format.Field[] getFields​(int offset)
        返回Format.Field与文字有关的常数offset 如果offset不是当前文本中的有效位置,这将返回一个空数组。
        参数
        offset - 偏移到要检查的文本
        结果
        Format.Field常量与给定位置处的文本相关联。