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

Class NumberFormatter

  • 实现的所有接口
    SerializableCloneable

    public class NumberFormatterextends 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<?>) ,这是一个IntegerLongFloatDoubleByteShort和格式的parseObject回报的一个实例Number ,该值类的对应实例将使用构造函数创建适用于值类所代表的原始类型。 例如: setValueClass(Integer.class)将导致通过Integer.valueOf(((Number)formatter.parseObject(string)).intValue())创建结果值。 如果你希望设置一个最小/最大的值作为各个这通常是有用Number实现一般不相互媲美。 如果由于某种原因您需要为您的值实现特定的Number这也很有用。

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

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

      • NumberFormatter

        public NumberFormatter()
        创建 NumberFormatter与默认 NumberFormat从获得的实例 NumberFormat.getNumberInstance()
      • NumberFormatter

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

      • setFormat

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

        如果您使用了nullary构造函数,则将通过NumberFormat.getNumberInstance()方法为当前区域设置确定此属性的值。

        重写:
        setFormat在类 InternationalFormatter
        参数
        format - NumberFormat instance used to dictate legal values