FocusEvent не получает последнее значение JFormattedTextField, как я могу его получить?

У меня есть два объекта JFormattedTextField на моем объекте JFrame . Мне нужна базовая математика (сложение) значений этих объектов JFormattedTextField . Я хочу, чтобы это произошло, когда фокус потерял первое или второе текстовое поле. Но когда " focusLost () ", событие не получает последнее значение, а получает предыдущее значение.

Например; tf1 имеет 0, а tf2 сначала имеет 0. Я записываю 2 в tf1 , и когда focusLost () , результат ( tf1 + tf2 ) становится нулевым, когда я меняю любой из них, результат становится 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)));
}
8
задан mKorbel 23 July 2011 в 23:41
поделиться