FocusEvent não obtém o último valor de JFormattedTextField. Como posso obtê-lo?

Eu tenho doisJFormattedTextField objetos no meuJFrame objeto. Eu quero uma matemática básica (adição) pelos valores dessesJFormattedTextField objetos. Quero que aconteça quando o foco perdeu o primeiro ou o segundo campo de texto. Mas quando "focusLost() ", o evento não obtém o último valor, obtém o valor anterior.

Por exemplo;tf1 tem 0 etf2 tem 0 no início. Eu escrevo 2 paratf1, e quandofocusLost(), resultado tf1+tf2) fica igual a 0. quando altero algum deles, o resultado passa a 2 (o valor anterior)

Como obtenho os últimos valores no focusLost?

Aqui está o meu código:

JFormattedTextField tf1,tf2;
NumberFormat format=NumberFormat.getNumberInstance();
tf1=new JFormattedTextField(format);
tf1.addFocusListener(this);

tf2=new JFormattedTextField(format);
tf2.addFocusListener(this);

andfocusLost():

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)));
}

questionAnswers(3)

yourAnswerToTheQuestion