MouseMotionListener

eric76

Mitglied
Hallo,

im Follgenden Quellcode soll ein Element (was immer es auch tut) dann als MousMotionListener angemeldet werden, wenn die Maus sich über dem Element befindet und gedrückt wird. Nach dem Release soll es wieder abgemeldet werden. Leider funktioniert das überhaupt nicht.
Erst wenn man den remove im MouseReleased weglässt, dann reagiert das Element auf Mausbewegungen nach dem Release... Keine Ahnung warum...

[Java]
public class Panel extends JPanel implements MouseListener{

Element element;

@Override public void mouseClicked(MouseEvent e) {
}
@Override public void mousePressed(MouseEvent e) {
if (element.contains(e.getX(), e.getY()))
this.addMouseMotionListener(element);
}
@Override public void mouseReleased(MouseEvent e) {
this.removeMouseMotionListener(element);
}
@Override public void mouseEntered(MouseEvent e) {
}
@Override public void mouseExited(MouseEvent e) {
}

public Panel() {
element = new Element();
}

}
[/Java]

LG Eric
 

Fab1

Top Contributor
Wie du auch in deinem Quellcode sehen kannst, ist der Klassenname Panel bereits vergeben und sollte somit nicht unbedingt verwendet werden.
 
S

SlaterB

Gast
der Code ist nun wirklich viel zu wenig, dass add/remove an sich funktionieren wirst du sicher nicht bezweifeln,
mehr steht da quasi nicht, daraus kann man nicht erkennen, warum ein Programm nicht funktioniert

die Konstellation klingt aber interessant, mehr Code, idealerweise ein vollständiges Testprogramm, würde vielleicht angeschaut werden
 

eric76

Mitglied
Ha, Du hast mir den entscheidenden Hinweis geliefert. :toll:

Den Fehler hatte ich schonmal gemacht. In der Main voher:
Java:
{...
 Panel p = new Panel();
 frame.add(p);
 frame.addMouseListener(p);
...}

So geht's:

Java:
{...
 Panel p = new Panel();
 frame.add(p);
 p.addMouseListener(p);
...}

Danke!

LG Jan
 

Ähnliche Java Themen

Neue Themen


Oben