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
相比略有不同的行为stringToValue。 如果指定了值,一类DefaultFormatter.setValueClass(java.lang.Class<?>)
,这是一个Integer
, Long
, Float
, Double
, Byte
或Short
和格式的parseObject
返回的实例Number
,该值类的对应实例将使用构造创建适用于值类代表的原始类型。 例如: setValueClass(Integer.class)
将导致通过new Integer(((Number)formatter.parseObject(string)).intValue())
创建结果值。 如果您希望设置最小/最大值,则通常很有用,因为各种Number
实现通常不能相互比较。 如果由于某种原因,你需要一个特定的,这也是有用Number
实施你的价值观。
警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,支持所有JavaBeans的长期存储已经添加到java.beans
包中。 请参阅XMLEncoder
。
Constructor and Description |
---|
NumberFormatter()
创建一个
NumberFormatter 与默认的
NumberFormat 实例从
NumberFormat.getNumberInstance() 获得。
|
NumberFormatter(NumberFormat format)
使用指定的Format实例创建NumberFormatter。
|
Modifier and Type | Method and Description |
---|---|
void |
setFormat(Format format)
设置指定可编辑和显示的合法值的格式。
|
clone, getActions, getFields, getFormat, getMaximum, getMinimum, install, setMaximum, setMinimum, stringToValue, valueToString
getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClass
getFormattedTextField, invalidEdit, setEditValid, uninstall
public NumberFormatter()
NumberFormatter
与从
NumberFormat.getNumberInstance()
获得的默认
NumberFormat
实例。
public NumberFormatter(NumberFormat format)
format
- 用于规定合法价值的格式
public void setFormat(Format format)
如果你已经使用了默认构造将会由的方式当前语言环境确定此属性的值NumberFormat.getNumberInstance()
方法。
setFormat
在
InternationalFormatter
format
- 用于指定合法值的NumberFormat实例