FocusEvent erhält nicht den letzten Wert von JFormattedTextField, wie kann ich es bekommen?

8

Ich habe zwei JFormattedTextField Objekte auf meinem JFrame Objekt. Ich möchte eine grundlegende Mathematik (Addition) durch die Werte dieser JFormattedTextField -Objekte. Ich will, dass es passiert, wenn der Fokus entweder das erste oder das zweite Textfeld verloren hat. Aber wenn " focusLost() ", Ereignis nicht den letzten Wert erhält, erhält es den vorherigen Wert.

Zum Beispiel; tf1 hat 0 und tf2 hat zuerst 0. Ich schreibe 2 bis tf1 , und wenn focusLost() , Ergebnis ( tf1+tf2 ) wird immer noch 0. Wenn ich eine von ihnen ändere, wird das Ergebnis 2 (der vorherige Wert)

Wie bekomme ich die letzten Werte von focusLost?

Hier ist mein Code:

%Vor%

und focusLost() :

%Vor%     
Yasin Okumuş 23.07.2011, 23:34
quelle

3 Antworten

6

Ich denke, Sie sollten PropertyChangeListener verwenden, siehe So schreiben Sie einen Listener zum Ändern von Eigenschaften .

Es gibt ein Beispiel mit JFormattedTextField :

%Vor%     
Jonas 23.07.2011, 23:42
quelle
1

Gibt es in Ihrem JFormattedTextField tf1, tf2; einige defalut Number-Werte?

funktioniert für mich ohne NPE, zum Beispiel

%Vor%     
mKorbel 23.07.2011 23:41
quelle
1

Das Standardverhalten von JFormattedTextField für focusLost Ist COMMIT_OR_REVERT , so ist ein Ansatz, das Update nach durchzuführen, den der Fokus-Listener abgeschlossen hat. Eine Fortsetzung funktioniert gut, wie unten gezeigt.

%Vor%     
trashgod 24.07.2011 03:24
quelle