Einfacher Klick aber mouseClicked() zweimal aufgerufen

Status
Nicht offen für weitere Antworten.

SaschaLR

Bekanntes Mitglied
Hallo Leute!

Ich bin auf etwas gestoßen, das ich mir arge Probleme bereitet.

Ich habe eine JTable und einen JTree. Am Tree und am JTableHeader des Tables hängt der gleiche Mouselistener.

Er prüft halt, von wem das Ereignis kommt und führt dementsprechend etwas aus. Jetzt habe ich festgestellt, dass aber bei jedem Klick auf den Tree oder den Tableheader die Methoden des Listeners zwei mal aufgerufen werden, mit dem gleichen Object als Source.

Also, habe ich zum Nachvollziehen woher das kommt mal einer der beiden Komponenten den Listener nicht angehängt. Mit der Ergebnis, dass nur noch die Komponente mit dem Listener reagiert, aber mouseClicked() immernoch zweimal aufgerufen wird.

Hat jemand eine Idee woher das kommen kann? Ist das so ein typisches 'gotcha'? Oder noch besser, weiss eine(r) wie ich das abstellen, bzw. vernünftig damit umgehen könnte?

Vielen Dank!

Gruß Sascha
 
Hi Sascha,

habe das gerade mal mit diesem einfachen Test ausprobiert:

Code:
JFrame frame = new JFrame();
JTree tree = new JTree();
MouseListener ml = new MouseAdapter () {
    public void mouseClicked(java.awt.event.MouseEvent e) {
        System.out.println("########## clicked "+(++count));
    };
    private int count = 0;
};
tree.addMouseListener(ml);
frame.getContentPane().add(tree);
frame.setSize(400, 300);
frame.setVisible(true);

funktioniert tadellos.

- Ist deine Maus kaputt ?
- Hast du den Listener zweimal angehängt ?
- mehr fällt mir im Moment nicht ein :bahnhof:

Gruß
Mag1c
 
Hmm.. ich weiss, dass es total komisch ist!

Allerdings sieht es bei mir auch ein wenig anders aus als in deinem Test! Zum einen nutze ich ein JApplet und zum anderen hängt der gleiche Listener an zwei unterschiedlichen Komponenten (von denen ich ja immer nur eine anklicken ).

Das Problem an sich ist jetzt aber auch gegessen ... ich hatte diese Tatsache als Quelle einer Störung in Verdacht, aber das hat sich ebend als falsch herausgestellt.

Gruß Sascha
 
Hm...ich hatte das auch schonmal, hab's dann einfach mit einer boolean die auf true oder false gesetzt wird abgemurkst(also das Problem).

Bei mir war es so, dass einmal beim klicken, und einmal biem loslassen das ganze passierte.

Wenn du mal ein System.out.println() machst und mal langsam klickst, kannst du feststellen, ob's bei dir genauso ist....
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben