Supportnet Computer
Planet of Tech

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.

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 ?

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

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

Antwort 5 von Su_89

hmmmm habs mit fillPolygon gemacht.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Suche in allen vorhandenen Beiträgen: