MouseListener
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 schreiben
Antwort 1 von Marvin42 vom 18.05.2020, 13:35 Options
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.
Antwort 2 von Su_89 vom 18.05.2020, 22:23 Options
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 ?
Antwort 3 von Dr.Ma-Busen vom 18.05.2020, 23:27 Options
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
Antwort 4 von Su_89 vom 19.05.2020, 20:43 Options
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
Antwort 5 von Su_89 vom 19.05.2020, 20:53 Options
hmmmm habs mit fillPolygon gemacht.