setzt den Listener "On Change" auf jFormattedTextField

8

Ich habe ein jFormattedTextField in meinem Programm und ich muss den Text eines jLabels aktualisieren, wenn der Wert von jFormattedTextField gültig geändert wurde.
Tatsächlich erhält jFormattedTextField eine Nummer und jLabel zeigt den Unterschied zwischen dieser Nummer und einer anderen Zahl an.
Ich mache dies derzeit, indem ich auf das "FocusLost" -Ereignis von jFormatted-Text höre.

Wie kann ich das tun?

    
RYN 01.09.2011, 11:45
quelle

2 Antworten

10

Registrieren Sie einen PropertyChangeListener für die Eigenschaft "value" im formatedField

%Vor%

Verwenden Sie weder den DocumentListener noch den FocusListener: Ersterer wird zu oft benachrichtigt (auf jedem Keytyp, bevor das Parsing passiert ist), letzteres ist zu spröde.

    
kleopatra 01.09.2011, 13:35
quelle
1

Der einfachste Weg, dies zu tun, ist die Verwendung eines javax.swing.event.DocumentListener , das Sie an das Textfeld anhängen. Dann, wenn der Benutzer tippt, kann das Label aktualisiert werden.

Ich erinnere mich nicht an die genaue Sequenz, aber das insertUpdate() des Hörers kann aufgerufen werden, bevor das formatierte Textfeld validiert wird. Möglicherweise müssen Sie also auch in Ihrem Listener nach gültigen Nummern suchen.

    
AngerClown 01.09.2011 12:20
quelle