【发布时间】:2015-10-30 11:05:52
【问题描述】:
-
我有一个
JFormattedTextField,它只接受 8 位数字,但是当我尝试使用退格按钮清除文本字段时,它不会删除数字的第一个字符(删除按钮的行为也相同),我必须预先看到 Esc 键每次都删除这个字符。NumberFormat intFormat = NumberFormat.getIntegerInstance(); intFormat.setGroupingUsed(false); NumberFormatter numberFormatter = new NumberFormatter(intFormat); numberFormatter.setValueClass(Integer.class); numberFormatter.setAllowsInvalid(false); numberFormatter.setMinimum(0); numberFormatter.setMaximum(99999999); releaseNoTextField = new JFormattedTextField(numberFormatter);
这里有什么问题?
- 使用
releaseNoTextField.setText("")清除此文本字段也不起作用,还有其他方法吗?
【问题讨论】:
-
“同样用 releaseNoTextField.setText("") 清除这个文本字段也不起作用,还有其他方法吗?” - 你试过
setValue(null)吗? -
is not working是什么意思? -
我“认为”
JFormattedTextField、NumberFormatter和NumberFormat之间的要求是""不是有效数字,因此它拒绝您删除最后一个字符的尝试。numberFormatter.setAllowsInvalid强制执行此要求。如果您并不真正关心值的格式,而只是限制用户的输入,则可以使用JTextField和DocumentFilter -
@MadProgrammer 有什么方法可以在用户离开字段并清除文本后提示错误?
-
如果您使用
setAllowsInvalid(true),则应在用户离开该字段后重置该字段。通常,我会使用InputVerifier,但我不确定这是否适合JFormattedTextField
标签: java swing jformattedtextfield