Frage zu Mouseevents

Luk10

Top Contributor
Grüße,

Ich hab auf einem Panel ein (Buffered)Image. Nun brauche ich ein MouseEvent (Linksklick) in einem Kreis um den Punkt P(x | y) mit Radius r (Also alle Punkte in diesem Kreis sollen ein MouseEvent auslösen)

Kann mir jemand einen Link / Tipps geben wo man sich anschauen kann wie man sowas umsetzt?

Danke,
-Luk10-
 
'mouselistener example' in Suchmaschine liefert zig Links,
darunter ganz zentrale offizielle Tutorials wie
How to Write a Mouse Listener (The Java™ Tutorials > Creating a GUI With JFC/Swing > Writing Event Listeners)
auch jedes Lehrbuch sollte das behandeln,

immer ein Rätsel wie man zu so etwas nichts finden kann

bzw. wenn du den Listener an sich und die Koordinaten eines Klicks schon hast dann ist es doch nur noch Mathematik,
zählt Klick 17/32 wenn ein imaginärer Kreis bei 50/60 mit Radius 20 liegt?
dafür ein Beispiel welches alles vorrechnet ist wirklich nicht mehr so leicht, aber das ist doch dann auch ziemlich individuell
 
Zuletzt bearbeitet von einem Moderator:
Wenn man einen MouseListener an die Component hängt, bekommt der IMMER MouseEvents, wenn sich die Maus auf dieser Component befindet. MouseEvents nur in einem bestimmten Bereich auszulösen ist zwar theoretisch möglich, aber sehr diffizil. Üblicherweise macht man das so, dass man in der mousePressed (etc.) -Methode prüft, ob man auf das Ereignis reagieren will - also erst in der mousePressed-Methode prüft man, ob der Punkt innerhalb des Kreises liegt.
 
Hallo Luk10

zum MouseEvent findest Du genügend Beispiele über Google. Schwieriger dürfte folgendes sein:


(Also alle Punkte in diesem Kreis sollen ein MouseEvent auslösen)


Innerhalb MouseEvent kannst Du die x- und y-Koordinaten der Maus ermitteln und berechnen, ob sich diese in der Fläche des Kreises befinden.
 
--> tuttle64
Wie kann man das dann umsetzten, also dass der Listener nur bei einem Klick in dem Kreis reagiert, und nicht um ein gedachtes,
umliegendes Rechteck, in welches sich der Kreis befindet ?
 
Wenn P(x,y) die Koordinaten des Kreismittelpunktes sind und P1(x,y) des aktuellen Mousepunktes dann ergibt:

SQRT((Px-P1x)^2 + (Py-P1y)^2)

die Entfernung des aktuellen Mousepunktes vom Mittelpunkt des Kreises. Ist dieser Wert größer als der Radius, so liegt der Mousepunkt außerhalb des Kreises.

War das deine Frage?
Grüße
 

Neue Themen


Zurück
Oben