Module java.desktop
Package javax.swing.text

Class InternationalFormatter

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

public class InternationalFormatter extends DefaultFormatter
InternationalFormatter扩展了DefaultFormatter,使用java.text.Format的实例来处理转换为字符串和从字符串转换的操作。

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

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

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

如果InternationalFormatter配置为仅允许有效值(setAllowsInvalid(false)),每次有效编辑都将导致JFormattedTextField的文本完全重置为Format的内容。光标位置也将随着从结果字符串中添加/删除文字而调整。

InternationalFormatterstringToValue行为与DefaultTextFormatter略有不同,它执行以下操作:

  1. 在由setFormat指定的Format上调用parseObject
  2. 如果为值设置了一个类(setValueClass),则调用超类实现以将从parseObject返回的值转换为适当的类。
  3. 如果未抛出ParseException,且值在最小/最大值之外,则抛出ParseException
  4. 返回该值。
InternationalFormatter以这种方式实现stringToValue,以便您可以指定一个与Format返回的不同类别。

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

自版本:
1.4
参见:
  • Constructor Details

    • InternationalFormatter

      public InternationalFormatter()
      创建一个未指定FormatInternationalFormatter
    • InternationalFormatter

      public InternationalFormatter(Format format)
      使用指定的Format实例创建一个InternationalFormatter
      参数:
      format - 用于转换为/从字符串的Format实例
  • Method Details

    • setFormat

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

      public Format getFormat()
      返回规定可编辑和显示的合法值的格式。
      返回:
      用于转换为/从字符串的Format实例
    • setMinimum

      public void setMinimum(Comparable<?> minimum)
      设置最小允许值。如果未指定valueClass,且minimum非空,则valueClass将设置为minimum的类的类。
      参数:
      minimum - 可输入的最小合法值
      参见:
    • getMinimum

      public Comparable<?> getMinimum()
      返回最小允许值。
      返回:
      可输入的最小合法值
    • setMaximum

      public void setMaximum(Comparable<?> max)
      设置最大允许值。如果未指定valueClass,且max非空,则valueClass将设置为max的类的类。
      参数:
      max - 可输入的最大合法值
      参见:
    • getMaximum

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

      public void install(JFormattedTextField ftf)
      DefaultFormatter安装到特定的JFormattedTextField上。这将调用valueToString将当前值从JFormattedTextField转换为字符串。然后,将getActions返回的ActiongetDocumentFilter返回的DocumentFiltergetNavigationFilter返回的NavigationFilter安装到JFormattedTextField上。

      子类通常只需要在希望在JFormattedTextField上安装其他侦听器时重写此方法。

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

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

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

      public String valueToString(Object value) throws ParseException
      返回valueString表示。这会在当前Format上调用format
      覆盖:
      valueToString 在类 DefaultFormatter
      参数:
      value - 要转换的值
      返回:
      值的字符串表示
      抛出:
      ParseException - 如果转换中出现错误
    • stringToValue

      public Object stringToValue(String text) throws ParseException
      返回textObject表示。
      覆盖:
      stringToValue 在类 DefaultFormatter
      参数:
      text - 要转换的String
      返回:
      textObject表示
      抛出:
      ParseException - 如果转换中出现错误
    • getFields

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

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

      protected Action[] getActions()
      如果getSupportsIncrement返回true,则返回两个适用于增加/减少值的操作。
      覆盖:
      getActions 在类 JFormattedTextField.AbstractFormatter
      返回:
      在JFormattedTextField上安装的操作数组