У меня есть два JFormattedTextField
объекта на моем JFrame
объекте.Мне нужна базовая математика (сложение) по значениям этих JFormattedTextField
объектов.Я хочу, чтобы это произошло, когда фокус потерял первое или второе текстовое поле.Но когда «focusLost()
», событие не получает последнее значение, оно получает предыдущее значение.
Например;tf1
имеет 0, а tf2
сначала 0.Я пишу 2 в tf1
, и когда focusLost()
, результат (tf1+tf2
) становится все еще 0. Когда я изменяю любой из них, результат становится 2 (предыдущее значение)
Как я могу получитьпоследние значения на focusLost?
Вот мой код:
JFormattedTextField tf1,tf2;
NumberFormat format=NumberFormat.getNumberInstance();
tf1=new JFormattedTextField(format);
tf1.addFocusListener(this);
tf2=new JFormattedTextField(format);
tf2.addFocusListener(this);
и focusLost()
:
public void focusLost(FocusEvent e) {
if(tf1.getValue() == null) tf1.setValue(0);
if(tf2.getValue() == null) tf2.setValue(0);
//because if I dont set, it throws nullPointerException for tf.getValue()
BigDecimal no1 = new BigDecimal(tf1.getValue().toString());
BigDecimal no2 = new BigDecimal(tf2.getValue().toString());
System.out.println("total: " + (no1.add(no2)));
}