为什么JFormattedTextField恢复以前的值?

时间:2013-06-14 23:15:47

标签: java swing jtextfield jformattedtextfield

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

这是JFormattedtextField的代码。

jFormattedTextField2 = new javax.swing.JFormattedTextField(new DecimalFormat("###,###.##"));

1 个答案:

答案 0 :(得分:4)

这是因为JFormattedTextField允许配置使用setFocusLostBehavior方法丢失焦点时应采取的操作。

这些是行动。

  

描述

     

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

     

JFormattedTextField.COMMIT - 提交当前值。如果正在编辑的值不被AbstractFormatter视为合法值   也就是说,抛出ParseException,那么值不会改变,   然后编辑的值将持续存在。

     

JFormattedTextField.COMMIT_OR_REVERT - 与COMMIT类似,但如果值不合法,则表现得像REVERT。

     

JFormattedTextField.PERSIST - 什么也不做,不要获取新的AbstractFormatter,也不要更新值。

****默认为JFormattedTextField.COMMIT_OR_REVERT,因此当您输入无效值时,它会被还原并且您获得之前的值  一致的状态**