2013-06-14 3 views
1

Я использую JFormattedTextField, когда я пытаюсь удалить значение в поле, он автоматически восстанавливает предыдущее значение. В чем причина такого поведения и как я могу остановить его восстановление значения?Почему JFormattedTextField восстанавливает предыдущее значение?

Это код для JFormattedtextField.

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

Пожалуйста, покажите нам свой код. –

+0

Когда он восстанавливает предыдущее значение? Когда вы уйдете от него (или измените фокус каким-то другим способом)? –

+0

Когда фокус уходит (курсор исчезает), он изменяется. –

ответ

4

Это происходит потому, что JFormattedTextField позволяет настроить, какие действия следует предпринять при потере фокусировки с помощью метода setFocusLostBehavior.

Это действия.

Описание

JFormattedTextField.REVERT - Откат дисплей, совпадающее ПолучитьЗначение, возможно, потери текущего редактирования.

JFormattedTextField.COMMIT - Задает текущее значение. Если редактируемое значение не считается юридическим значением AbstractFormatter , то есть генерируется исключение ParseException, значение не изменяется, , а затем редактируемое значение сохраняется.

JFormattedTextField.COMMIT_OR_REVERT - Аналогично COMMIT, но если значение не является законным, действуйте как REVERT.

JFormattedTextField.PERSIST - Ничего не делайте, не получайте новый AbstractFormatter и не обновляйте значение.

**** По умолчанию JFormattedTextField.COMMIT_OR_REVERT поэтому при вводе недопустимого значения, он вернулся, и вы получите предыдущее согласованного состояния **