PropertyChangeListener empfängt Events doppelt

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich habe an einem SwingWorker einen EventListener gehängt und der wird mit firePropertyChanges in der doInBackground Methode des SwingWorkers auf dem Laufenden gehalten.

Viele Events kommen leider doppelt an. Wenn ich also an dem übergebenen EventObjekt getNewValue() aufrufe, erhalte ich einen Wert den ich bereits bekommen hatte.

Muss ich sowas über ID's auschließen ? Also jedem Event eine ID zuteilen und dann fragen ob ich ein Event bereits empfing ?


Danke, Alexander
 
G

Guest

Gast
Von welchem Typ sind die Values? Sind sie comparable? Wie werden die Events ausgelöst?
Ein gleicher Wert wird i.d.R. nur dann nicht geschickt, wenn er sich nicht vom alten untescheidet.
Siehe dazu: PropertyChangeSupport#firePropertyChange
Machst du dreimal firePropertyChange("alter", 0, 42), kriegt der Listener drei mal 42 als NewValue.
 
G

Guest

Gast
Die Values sind vmo Typ Object[] . Sie werden in einer SwingWorker Klasse ausgelöst und von einem PropertyChangeListener gefangen. Das fangen der Events sieht so aus:
Code:
            public void propertyChange(PropertyChangeEvent evt) {
                    /*This is to avoid duplicate events */
                    String vectorName = "";
                    if ("progress".equals(evt.getPropertyName())) {
                        Object[] data = (Object[])evt.getNewValue();
                        if(!vectorName.equals(data[0])){            //not very nice !!!
                            wordTableModel.addRow(data);        
                            vectorName = data[0]; 
                        }                
                    }
            }
[code/]

Ich möchte also nach jedem Event eine Zeile in einem JTable hinzufügen. Mit  if(!vectorName.equals(data[0]))   verhindere ich, dass ständig die gleichen Zeilen zum wordTableModel hinzugefügt werden.

Es findet nur ein firePropertyEvent statt. Das habe ich mit System.out's gecheckt ! ;)

Woran liegt das ?
 
G

Guest

Gast
String vectorName = ""; sollte selbstverständlich ausserhalb der methode stehen. Darin merke ich mir den letzten Wert und vergleiche ihn mit dem aktuellen. Wenn sich beide gleichen, dann weiß ich, dass der Event zweimal angekommen ist...


Danke
 

kleiner_held

Top Contributor
Wenn wirklich nur ein firePropertyEvent() ausgeloest wird, hast du deinen PropertyChangeListener wahrscheinlich 2 mal registriert ansonsten wuerde er Events nicht doppelt bekommen. Einfach mal mit dem Debugger checken.
 
G

Guest

Gast
Danke, es hilft mir schon zu wissen, dass es nicht normal mehrere Events zu empfangen. Dann debugge ich mal....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
frager2345 Java Beans -> PropertyChangeListener Java Basics - Anfänger-Themen 3
T Probleme mit PropertyChangeListener Java Basics - Anfänger-Themen 4
I Ical4j - Lazy Loading von Events? Java Basics - Anfänger-Themen 2
D Events verarbeiten Java Basics - Anfänger-Themen 1
nonickatall Erste Schritte Events Dokumentation/Tutorial Java Basics - Anfänger-Themen 1
K die Source eines Events bei verschiedenen Quellen herausfinden Java Basics - Anfänger-Themen 1
M Best Practice Events für jeden, oder für die Allgemeinheit "registrieren"? Java Basics - Anfänger-Themen 5
O Wie Log4J - Ausgaben/Events auffangen?! Java Basics - Anfänger-Themen 3
Thallius Best Practice Events zwischen eigenen Klassen Java Basics - Anfänger-Themen 2
G Events schreiben, solange Programm läuft Java Basics - Anfänger-Themen 6
H [JAVA] NetBeans GUI Builder - Events Java Basics - Anfänger-Themen 10
G Erste Schritte Window Events in Java Java Basics - Anfänger-Themen 6
Y Events auslösen Java Basics - Anfänger-Themen 11
T fenster schliesen und mouse events in einer nicht abstrakten klasse Java Basics - Anfänger-Themen 6
S Dauer eines Events anhandUnterschied berechnen? Java Basics - Anfänger-Themen 3
Nicer Maus Events Java Basics - Anfänger-Themen 2
H Listener und Events entfernen Java Basics - Anfänger-Themen 2
R wieso Nullpoint und was mit Events ? Java Basics - Anfänger-Themen 14
F Reihenfolge in der Events abgearbeitet werden Java Basics - Anfänger-Themen 2
Luk10 Problem mit vielen Timer(-Events) Java Basics - Anfänger-Themen 17
B Events behandeln Java Basics - Anfänger-Themen 4
A Events werfen/feuern wenn bestimtm methode ausgeführt wird Java Basics - Anfänger-Themen 3
E import org.eclipse.swt.Events.PaintListener; Java Basics - Anfänger-Themen 1
M Urheber von Events ermitteln Java Basics - Anfänger-Themen 5
S Eigene Events werfen? Java Basics - Anfänger-Themen 6
G Events manuell aulösen Java Basics - Anfänger-Themen 3
C Listener und Events Java Basics - Anfänger-Themen 10
D Events nicht bei den jeweiligen Objekten? Java Basics - Anfänger-Themen 3
F Eigene Klasse für Events Java Basics - Anfänger-Themen 10
G Events Java Basics - Anfänger-Themen 8
S Keylistener-Events hochreichen Java Basics - Anfänger-Themen 4
H Problem mit Events bzw. Referenzen Java Basics - Anfänger-Themen 4
H Events Java Basics - Anfänger-Themen 5
G Loop blockt alle Events Java Basics - Anfänger-Themen 7
D Probleme mit key events Java Basics - Anfänger-Themen 6
S Events Java Basics - Anfänger-Themen 11
S MouseListener - Events auf Mouseklick Java Basics - Anfänger-Themen 14
D Events Java Basics - Anfänger-Themen 4
G Events Java Basics - Anfänger-Themen 2
E Events nicht an aufrufendes Objekt schicken Java Basics - Anfänger-Themen 23
R events . usw Java Basics - Anfänger-Themen 6
S winXP -> window-events Java Basics - Anfänger-Themen 2
D [Problem] Events Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben