Java 正在清除JFormattedTextField的内容是否不起作用?
我有一个Java 正在清除JFormattedTextField的内容是否不起作用?,java,swing,jformattedtextfield,Java,Swing,Jformattedtextfield,我有一个JFormattedTextField,它只接受8位数字,但当我试图用backspace按钮清除textfield时,它不会删除数字的第一个字符(与delete按钮的行为相同),每次我都必须显示Esc键来删除这个字符 NumberFormat intFormat = NumberFormat.getIntegerInstance(); intFormat.setGroupingUsed(false); NumberFormatter numberFormatter = new Numbe
JFormattedTextField
,它只接受8位数字,但当我试图用backspace按钮清除textfield时,它不会删除数字的第一个字符(与delete按钮的行为相同),每次我都必须显示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(“”
清除此文本字段也不起作用,是否有其他方法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);
这是由numberFormatter.setAllowsInvalid(false)应用的限制
将空白的字符串
(“”
)视为无效的数值。如果使用numberFormatter.setAllowsInvalid(true)
您可以删除所有字符,但也可以输入您喜欢的任何值
但是,在用户离开该字段后,将对该字段进行验证
如果您不关心已格式化的值(12345678
),则可以使用应用于普通JTextField
的DocumentFilter
,实现其中所需的逻辑。有关更多详细信息,请参阅和
用releaseNoTextField.setText(“”)清除此文本字段也不起作用,有其他方法吗
您应该(始终)为
JFormattedTextField
使用setValue
,并且应该为truesetValue(null)
以清除该字段releaseNoTextField.setFocusLostBehavior(javax.swing.JFormattedTextField.COMMIT)
“也用releaseNoTextField.setText(“”)清除此文本字段不起作用,有其他方法吗?”-您是否尝试过setValue(null)
?什么意思是不起作用
?我“认为”这是JFormattedTextField
之间的要求,NumberFormatter
和NumberFormat
表示“
不是有效数字,因此它拒绝您删除最后一个字符的尝试。此要求由numberFormatter.setAllowsInvalid
强制执行。如果您并不真正关心值的格式,只是简单地限制用户的输入,您可以使用JTextField
和DocumentFilter
@mad程序员在用户离开字段并清除文本后,有没有办法提示错误?如果您使用setAllowsInvalid(true)
,然后,在用户离开该字段后,应重置该字段。通常,我会使用InputVerifier
,但我不确定这是否适合JFormattedTextField