MouseListener reagiert 2 Mal

Pommes9485

Bekanntes Mitglied
Guten Tag,

ich benutze eine JLabel und lasse beim klicken auf eine der Zeilen etwas passieren. Aber komischerweise passiert dies IMMER zweimal. Ich dachte es würde daran liegen, das der Klick zweimal gewertet wird, weil er so lang ist(erklärung blöd, klang aber ganz plausibel), aber obwohl ich nach der Aktion eine Sekunde warte, macht er es dennoch 2 mal.

Hier der Code des Listeners...
Java:
table.addMouseListener(new MouseListener(){
                public void mouseExited(MouseEvent e){}
                public void mouseEntered(MouseEvent e){}
                public void mouseReleased(MouseEvent e){}
                public void mousePressed(MouseEvent e){}
                public void mouseClicked(MouseEvent e){
                int i = table.rowAtPoint(e.getPoint());
                if(dir.getAbsolutePath().endsWith("\\"))
                {
                    String pfadee = dir.getAbsolutePath()+(String)table.getValueAt(i,1)+ "\\";
                    System.out.println(pfadee);
                setzePfad(pfadee);
                
                }
                else
                {
                 String pfadee = dir.getAbsolutePath() +"\\"+(String)table.getValueAt(i,1)+ "\\";
                    System.out.println(pfadee);
                setzePfad(pfadee);
                
                }
                long time = System.currentTimeMillis();
               time += 1000;
              while(System.currentTimeMillis()<=time)
                {
    
                    warten();
               }
                System.out.println("Klick");
                }
        });

Könnt ihr mir helfen ? Habe urspünglich den Doppelklick nehmen wollen, allerdings funktionierte das überhaupt nicht. Mein Primär Problem ist allerdings das oben beschriebene...
 

Marco13

Top Contributor
Sicher, dass die Methode, in der der Gepostete Teil steht, nicht zweimal aufgerufen (und damit der MouseListener ZWEI mal hinzugefügt) wird?
 

Pommes9485

Bekanntes Mitglied
Du hast recht, da war ein Logikfehler meinerseits mit aufgeführt. Gibt es eine Möglichkeit ALLE MouseListeners zu entfernen...

Ich entferne jeden meinen eigenen MouseListener nun sofort. Aber er handelt dennoch genauso...
 
Zuletzt bearbeitet:

Ark

Top Contributor
Ohne Code ist das jetzt sehr schwierig … Du musst schon zeigen, wie und wo du die Listener hinzufügst bzw. wieder entfernst.

Im Übrigen klingt das ziemlich nach Holzhammer … genauso wie diese [c]warten()[/c]-Konstruktion. ;)

Ark
 

L-ectron-X

Gesperrter Benutzer
Hat zwar nichts mit dem Problem zu tun. Aber für deine Art und Weise den MouseListener zu implementieren gibts den [japi]MouseAdapter[/japi]. Dann brauchst du nur noch die benötigte Methode zu überschreiben, die nicht benutzen kannst du dann weglassen.
 

bERt0r

Top Contributor
Du hast recht, da war ein Logikfehler meinerseits mit aufgeführt. Gibt es eine Möglichkeit ALLE MouseListeners zu entfernen...

Ich entferne jeden meinen eigenen MouseListener nun sofort. Aber er handelt dennoch genauso...

Sollte so funktionieren:
Java:
MouseListener[] listeners=component.getMouseListeners();
for(MouseListener l:listeners)
{
component.removeMouseListener(l);
}
 

Marco13

Top Contributor
Das ist auch eine Holzhammermethode - das sollte man i.a. NICHT machen. Niemand weiß, wer sonst dort welche Listener registriert hat, und was durch so eine Aktion vielleicht nicht mehr funktioniert...
 

MarderFahrer

Gesperrter Benutzer
Ich würde auch daraf tippen, dass
Java:
table.addMouseListener
zweimal durchlaufen wird. Somit wird zweimal der Listener angelegt und es gibt zwei Ausgaben.

Du könntest vor dieser Zeile einmal einen
Java:
System.out.println("Test")
schreiben und dann das Programm laufen lassen. Wird die addMouseListener Zeile zweilmal ausgeführt, hast du zweimal "Test" auf der Konsole.

Sollte das der Fall sein, wäre eine Möglichkeit, den Mouse Listener in eine externe Klasse auszulagern, und die
Java:
table.addMouseListener
Zeile in den Konstruktor von deiner Klasse zu packen. So sollte sie nur bei erzeugung deiner Klasse einmal ausgeführt werden.
 

Pommes9485

Bekanntes Mitglied
Danke euch allen. Ich weis garnicht was da am Anfang nicht ging, aufjedenfall hatte ich den MouseListener nach jedem klicken neu gemacht. Das habe ich jetzt anders gelöst und es funktioniert.

Ich weis das die warten Methode die Performance nicht gerade erhöht, aber wie würdet ihr es machen ?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I AWT MouseListener Extra Knopf auf der Maus Allgemeine Java-Themen 9
L MouseListener für viele Objekte erstellen Allgemeine Java-Themen 16
L Koordinaten des Mouselistener nicht überall gleich Allgemeine Java-Themen 13
B LEERE JTable MouseListener + popupmenu Allgemeine Java-Themen 2
C MouseListener und Repaint() Allgemeine Java-Themen 6
T Edit: JLabel+MouseListener oeffnet mehrere Instanzen Allgemeine Java-Themen 5
B MouseListener und KeyListener Allgemeine Java-Themen 15
T MouseListener und MouseMotionListener Allgemeine Java-Themen 3
V MouseListener Allgemeine Java-Themen 2
F Wo MouseListener Positionieren Allgemeine Java-Themen 4
E MouseListener Priorität Allgemeine Java-Themen 4
ElViZ MouseListener auf Linie die per drawLine() gezeichnet wurde? Allgemeine Java-Themen 2
S Anonymen MouseListener entfernen? Allgemeine Java-Themen 2
P Bug mouseListener Allgemeine Java-Themen 2
B Programm soll auf die Eingabe vom Mouselistener warten. Allgemeine Java-Themen 19
M 1. Probleme mit MouseListener, 2. Anwendung in Infobar Allgemeine Java-Themen 8
V MouseListener Allgemeine Java-Themen 9
S MouseListener Allgemeine Java-Themen 18
S Problem Mouselistener Allgemeine Java-Themen 6
G Mouselistener geht aber danach Fehler bei JOptionPane Allgemeine Java-Themen 4
R Global KeyListener/MouseListener Allgemeine Java-Themen 4
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
P Methode keyPressed() reagiert nicht im Browser Allgemeine Java-Themen 6
R DocumentListener: Programm Reagiert nicht mehr Allgemeine Java-Themen 2
S Reagiert JavaIO auf InterruptedExceptions..? Allgemeine Java-Themen 2
G java als dienst, welcher auf tastatureingaben reagiert Allgemeine Java-Themen 6
J Java reagiert nicht mehr auf die Tastatur Allgemeine Java-Themen 2
C ActionListener reagiert zu oft Allgemeine Java-Themen 5
G Java/Eclipse reagiert nicht auf Aenderungen Allgemeine Java-Themen 6
A Wie mach ich, das mein Button schneller reagiert. Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben