Supportnet / Forum / Anwendungen(Java,C++...)
MouseListener
Frage
kennt sich irgendwer mit den MouseListener in Java aus ?
Ich möchte auf ein gezeichnetes Dreieck
(eigene Klasse button mit der Methode dreickUp() )
die dreieckUp() MEthode zeichnet mir ein Dreick auf mein Gui
..einen MouseListener implementieren
der mir auf der Konsole anzeigt, ob die Maus gerade über dem Objekt ist oder ob gerade gecklickt wurde .... etc
wie stelle ich das am besten an ?
Hab mir zwar die Doku durchgelesen aber funktionieren tuts nicht so wirklich.
Antwort 1 von Marvin42
Jedes grafische Objekt in Java ist eine Component (oder JComponent, je nach verwendetem GUI). An alle Komponenten kann man mit addMouseListener(...) einen MouseListener anhängen.
Ein MouseListener beherrscht unter anderem die Methoden mouseEntered, mouseExited und mouseClicked. In diesen Methoden kannst du entsprechend schreiben, was in den genannten Fällen passieren soll - also auch Ausgaben auf System.out.
Wenn ich dich richtig verstehe, dürfte dein Dreieck nur einen Teil der Komponente ausfüllen. Dann musst du dir zum einen beim Klick eine Möglichkeit überlegen zu bestimmen, ob die Mausposition innerhalb des Dreiecks ist oder nicht. Dazu hat das in die Methode übergebene MouseEvent entsprechende Methoden, um sich die Koordinaten der Maus geben zu lassen.
Zum anderen kannst du wahrscheinlich auch nicht mehr mouseEntered und mouseExited verwenden, sondern wirst auf einen MouseMotionListener angewiesen sein, dessen Methode mouseMoved du entsprechend implementieren musst.
Ein MouseListener beherrscht unter anderem die Methoden mouseEntered, mouseExited und mouseClicked. In diesen Methoden kannst du entsprechend schreiben, was in den genannten Fällen passieren soll - also auch Ausgaben auf System.out.
Wenn ich dich richtig verstehe, dürfte dein Dreieck nur einen Teil der Komponente ausfüllen. Dann musst du dir zum einen beim Klick eine Möglichkeit überlegen zu bestimmen, ob die Mausposition innerhalb des Dreiecks ist oder nicht. Dazu hat das in die Methode übergebene MouseEvent entsprechende Methoden, um sich die Koordinaten der Maus geben zu lassen.
Zum anderen kannst du wahrscheinlich auch nicht mehr mouseEntered und mouseExited verwenden, sondern wirst auf einen MouseMotionListener angewiesen sein, dessen Methode mouseMoved du entsprechend implementieren musst.
Antwort 2 von Su_89
puh ! hört sich nicht gerade leicht an ^^
aber ich habs wenigstens geschafft den MouseListener mal zu implementieren und es mal auf den gesamten JFrame benutzt.
geht wunderbar.
geschwUp.addMouseListener(this);
-> dies geht nicht so ganz ...... es wird kein MouseEvent geworfen, wenn ich darüber fahre.
ALso wie soll ich das jetzt am besten lösen?
Soweit ich weiß gibt es irgendeine Methode die x und y Position des zeigers anzeigt......
Also ich hab mir dass mal ungefähr überlegt:
// zumindest mal für quadrat....
if( ((MousXPos > x ) && (MousXPos < x )) && ((MousYPos > y ) && (MousYPos < y)) ){
throw Event ??
}
könnte das so ungefähr klappen ?
wenn ja, wie soll ich dass dann für ein Dreieck berechnen ?
aber ich habs wenigstens geschafft den MouseListener mal zu implementieren und es mal auf den gesamten JFrame benutzt.
geht wunderbar.
geschwUp.addMouseListener(this);
-> dies geht nicht so ganz ...... es wird kein MouseEvent geworfen, wenn ich darüber fahre.
ALso wie soll ich das jetzt am besten lösen?
Soweit ich weiß gibt es irgendeine Methode die x und y Position des zeigers anzeigt......
Also ich hab mir dass mal ungefähr überlegt:
// zumindest mal für quadrat....
if( ((MousXPos > x ) && (MousXPos < x )) && ((MousYPos > y ) && (MousYPos < y)) ){
throw Event ??
}
könnte das so ungefähr klappen ?
wenn ja, wie soll ich dass dann für ein Dreieck berechnen ?
Antwort 3 von Dr.Ma-Busen
Moin!
Wie zeichnest du denn dein Dreieck? Zeichnest du selber jede Linie oder machst du das über ein Polygon?
Ich würde es mit ein Polygon versuchen, weil die Klasse Polygon hat eine Methode (contains) mit der man überprüfen kann ob ein bestimmter punkt sich innerhalb des Polygon befindet oder nicht.
Mfg
Wie zeichnest du denn dein Dreieck? Zeichnest du selber jede Linie oder machst du das über ein Polygon?
Ich würde es mit ein Polygon versuchen, weil die Klasse Polygon hat eine Methode (contains) mit der man überprüfen kann ob ein bestimmter punkt sich innerhalb des Polygon befindet oder nicht.
Mfg
Antwort 4 von Su_89
wie wie wie ???
das is genau das was ich jetzt gerade brauche ^^
jahui ! jemand der sich auskennt ^^ *freu*
kannste mir ein Bsp machen mit einem drangehängten mouseListener bei dem auch mouseExited und mouseEntered funktioniert ???
lg Su
das is genau das was ich jetzt gerade brauche ^^
jahui ! jemand der sich auskennt ^^ *freu*
kannste mir ein Bsp machen mit einem drangehängten mouseListener bei dem auch mouseExited und mouseEntered funktioniert ???
lg Su
Antwort 5 von Su_89
hmmmm habs mit fillPolygon gemacht.

