java.lang.Object javax.swing.JFormattedTextField.AbstractFormatter javax.swing.text.DefaultFormatter javax.swing.text.InternationalFormatter javax.swing.text.NumberFormatter
public class NumberFormatter
添加数字特殊行为的 InternationalFormatter
的子类 NumberFormatter
。使用的规范(这些规范只在 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
之一)指定了某个类,并且 Format 的 parseObject
返回一个 Number
的实例,则将使用适合于该值类表示的基本类型的构造方法创建一个该值类的对应实例。例如:setValueClass(Integer.class)
将导致结果值通过 new Integer(((Number)formatter.parseObject(string)).intValue())
创建。通常,当希望设置最小/最大值时此方法很有用,因为各种 Number
实现一般不相互比较。如果由于某种原因需要某些值的特定 Number
实现,此方法也非常有用。
警告:此类的已序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储或运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
构造方法摘要 | |
---|---|
NumberFormatter() 创建具有默认 NumberFormat 实例的 NumberFormatter ,该实例通过 NumberFormat.getNumberInstance() 获得。 |
|
NumberFormatter(NumberFormat format) 创建具有指定 Format 实例的 NumberFormatter。 |
方法摘要 | |
---|---|
void |
setFormat(Format format) 设置指示可以编辑和显示的合法值的格式。 |
从类 javax.swing.text.InternationalFormatter 继承的方法 |
---|
clone, getActions, getFields, getFormat, getMaximum, getMinimum, install, setMaximum, setMinimum, stringToValue, valueToString |
从类 javax.swing.JFormattedTextField.AbstractFormatter 继承的方法 |
---|
getFormattedTextField, invalidEdit, setEditValid, uninstall |
从类 java.lang.Object 继承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public NumberFormatter()
NumberFormat
实例的
NumberFormatter
,该实例通过
NumberFormat.getNumberInstance()
获得。
public NumberFormatter(NumberFormat format)
format
- 用于指示合法值的 Format
方法详细信息 |
---|
public void setFormat(Format format)
如果已经使用了默认构造方法,则将通过 NumberFormat.getNumberInstance()
方法为当前语言环境确定此属性值。
InternationalFormatter
中的
setFormat
format
- 用于指示合法值的 NumberFormat 实例