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

Class NumberFormatter

  • All Implemented Interfaces:
    SerializableCloneable


    public class NumberFormatter
    extends InternationalFormatter
    NumberFormatter子类InternationalFormatter为数字添加特殊行为。 其中专业化(仅在NumberFormatter不显示无效数字时使用,例如: setAllowsInvalid(false) ):
    • 在任何字段中按+/-( - 从与DecimalFormatSymbols相关联的DecimalFormat ),但指数字段将尝试将数字的符号更改为正/负。
    • 在指数字段中按+/-( - 从与DecimalFormatSymbols相关联的DecimalFormat )将尝试将指数的符号改为正/负。

    如果您显示科学数字,您可能希望打开覆盖模式, setOverwriteMode(true) 例如:

      DecimalFormat decimalFormat = new DecimalFormat("0.000E0");
     NumberFormatter textFormatter = new NumberFormatter(decimalFormat);
     textFormatter.setOverwriteMode(true);
     textFormatter.setAllowsInvalid(false); 

    如果要允许用户输入十进制值,您应该强制DecimalFormat至少包含一个小数( #.0### ),或允许该值无效setAllowsInvalid(true) 否则用户可能无法输入十进制值。

    NumberFormatter提供与其超类相比稍微不同于stringToValue行为。 如果指定了值,一类DefaultFormatter.setValueClass(java.lang.Class<?>) ,这是一个IntegerLongFloatDoubleByte或者Short和格式的parseObject的实例返回Number ,该值类的对应实例将使用构造函数创建适用于值类代表的原始类型。 例如: setValueClass(Integer.class)将导致通过Integer.valueOf(((Number)formatter.parseObject(string)).intValue())创建结果值。 如果您希望设置最小/最大值,这通常很有用,因为各种Number实现通常不能相互比较。 这也是有用的,因为某些原因,您需要一个特定的Number实现您的值。

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

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

      • NumberFormatter

        public NumberFormatter​()
        创建一个 NumberFormatter具有从 NumberFormat.getNumberInstance()获取的默认 NumberFormat实例。
      • NumberFormatter

        public NumberFormatter​(NumberFormat format)
        使用指定的Format实例创建NumberFormatter。
        参数
        format - 用于指定合法值的格式
    • 方法详细信息

      • setFormat

        public void setFormat​(Format format)
        设置指定可编辑和显示的合法值的格式。

        如果您使用了nullary构造函数,将通过NumberFormat.getNumberInstance()方法为当前语言环境确定此属性的值。

        重写:
        setFormatInternationalFormatter
        参数
        format - NumberFormat instance used to dictate legal values