- java.lang.Object
-
- javax.swing.JFormattedTextField.AbstractFormatter
-
- javax.swing.text.DefaultFormatter
-
- javax.swing.text.InternationalFormatter
-
- javax.swing.text.NumberFormatter
-
- All Implemented Interfaces:
-
Serializable
,Cloneable
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<?>)
,这是一个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
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 NumberFormatter()
创建一个NumberFormatter
具有从NumberFormat.getNumberInstance()
获取的默认NumberFormat
实例。NumberFormatter(NumberFormat format)
使用指定的Format实例创建NumberFormatter。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
setFormat(Format format)
设置指定可编辑和显示的合法值的格式。-
Methods inherited from class javax.swing.text.DefaultFormatter
getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClass
-
Methods inherited from class javax.swing.text.InternationalFormatter
clone, getActions, getFields, getFormat, getMaximum, getMinimum, install, setMaximum, setMinimum, stringToValue, valueToString
-
Methods inherited from class javax.swing.JFormattedTextField.AbstractFormatter
getFormattedTextField, invalidEdit, setEditValid, uninstall
-
-
-
-
构造方法详细信息
-
NumberFormatter
public NumberFormatter()
创建一个NumberFormatter
具有从NumberFormat.getNumberInstance()
获取的默认NumberFormat
实例。
-
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
-
-