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

Class InternationalFormatter

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

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

    如果getAllowsInvalid()为false,则会要求Format格式化每次编辑时的当前文本。

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

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

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

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

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

    警告:此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始, java.beans软件包中添加了对所有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()
        返回指示可以编辑和显示的合法值的格式。
        结果
        用于从/转换为字符串的格式实例
      • setMinimum

        public void setMinimum​(Comparable<?> minimum)
        设置最小允许值。 如果valueClass尚未指定,并minimum为非null,则valueClass将被设置为该类的minimum
        参数
        minimum - 可输入的最小合法值
        另请参见:
        DefaultFormatter.setValueClass(java.lang.Class<?>)
      • getMinimum

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

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

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

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

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

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

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

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