- 所有已实现的接口:
-
Serializable
,Cloneable
NumberFormatter
是 InternationalFormatter
的子类,为数字添加特殊行为。特殊化包括以下内容(仅当 NumberFormatter
不显示无效数字时使用,例如,setAllowsInvalid(false)
):
- 在任何字段中按下 +/-(- 是根据与
DecimalFormat
相关联的DecimalFormatSymbols
确定)将尝试将数字的符号更改为正/负。 - 在指数字段中按下 +/-(- 是根据与
DecimalFormat
相关联的DecimalFormatSymbols
确定)将尝试将指数的符号更改为正/负。
如果您要显示科学计数法数字,您可能希望打开覆盖模式,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<?>)
,该类是 Integer
、Long
、Float
、Double
、Byte
或 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
-
Constructor Summary
ConstructorDescription使用从NumberFormat.getNumberInstance()
获取的默认NumberFormat
实例创建一个NumberFormatter
。NumberFormatter
(NumberFormat format) 使用指定的 Format 实例创建一个 NumberFormatter。 -
Method Summary
Methods declared in class javax.swing.text.InternationalFormatter
clone, getActions, getFields, getFormat, getMaximum, getMinimum, install, setMaximum, setMinimum, stringToValue, valueToString
Methods declared in class javax.swing.text.DefaultFormatter
getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClass
Methods declared in class javax.swing.JFormattedTextField.AbstractFormatter
getFormattedTextField, invalidEdit, setEditValid, uninstall
-
Constructor Details
-
NumberFormatter
public NumberFormatter()使用从NumberFormat.getNumberInstance()
获取的默认NumberFormat
实例创建一个NumberFormatter
。 -
NumberFormatter
使用指定的 Format 实例创建一个 NumberFormatter。- 参数:
-
format
- 用于规定合法值的格式
-
-
Method Details
-
setFormat
设置规定可编辑和显示的合法值的格式。如果您使用了无参构造函数,则此属性的值将通过
NumberFormat.getNumberInstance()
方法根据当前区域设置确定。- 覆盖:
-
setFormat
在类InternationalFormatter
中 - 参数:
-
format
- 用于规定合法值的 NumberFormat 实例
-