为什么 JFormattedTextField 恢复以前的值?

Sal*_*kci 2 java swing jtextfield jformattedtextfield

我正在使用 JFormattedTextField,当我尝试删除字段中的值时,它会自动恢复以前的值。这种行为的原因是什么?我怎样才能阻止它恢复价值?

这是 JFormattedtextField 的代码。

jFormattedTextField2 = new javax.swing.JFormattedTextField(new DecimalFormat("###,###.##"));
Run Code Online (Sandbox Code Playgroud)

nac*_*okk 5

发生这种情况是因为JFormattedTextField允许使用该方法配置失去焦点时应采取的操作setFocusLostBehavior

这些就是行动。

描述

JFormattedTextField.REVERT- 恢复显示以匹配 getValue 的显示,可能会丢失当前编辑。

JFormattedTextField.COMMIT- 提交当前值。如果正在编辑的值不被 AbstractFormatter 视为合法值,即抛出 ParseException,则该值不会更改,然后编辑的值将保留。

JFormattedTextField.COMMIT_OR_REVERT- 与 COMMIT 类似,但如果值不合法,则行为类似于 REVERT。

JFormattedTextField.PERSIST- 不执行任何操作,不获取新的 AbstractFormatter,也不更新值。

**** 默认情况JFormattedTextField.COMMIT_OR_REVERT下,当您输入无效值时,它会被恢复并获得之前的一致状态**