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?
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.
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.
Tags und Links java swing events listen jformattedtextfield