Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo, ich habe mal wieder eine Frage Es geht um Folgendes: Ich möchte die Position eines Mausklicks genauer bestimmen. Z.b. habe ich irgendwo auf auf einem Panel einen Kreis gezeichnet, der auch noch ständig seine Position ändert. Jetzt möchte ich, dass wenn ich auf diesen Kreis klicke, ein Event ausgelöst wird. Wie gehe ich am besten vor, wenn ich das Event nur ausgelöst haben möchte, wenn die Maus wirklich innerhalb des Kreises ist?
Und wie verhält es sich, wenn ich ein Bild habe? Also wenn ich bspw. ein PNG in der Form eines Kreises habe? Kann ich da den Anzeigebereich genau so genau abfragen?
Und noch etwas: Wenn ich ein animiertes Bild möchte, wie macht man das am besten in Java? Jede Animationsstufe als einzelnes Bild und dann in eine Schleife packen?
Bei dem Bild kann man schonmal feststellen, ob man AUF das Bild geklickt hat, indem man testet, ob die Mausposition innerhalb des "Rectangles" ist, das vom Bild beschrieben wird. Ob ein "Kreis" in diesem Bild angeklickt wurde, kann man nur feststellen, wenn man weiß, was den "Kreis" vom Hintergrund unterscheidet (z.B. die Farbe...)
Ich hallt den Ansatz über das Bild bzw. die Bildfarbe allerdings für nicht sehr "schön". Was wenn man das Bild mal austauchst? Oder bei einem mehrfarbigen Bild...
Mein Favorit ein "echtes" Kreis Objekt verwenden und das Bild hineinzeichnen. Die Überprüfung ausschließlich über das Kreis Objekt.
Kreise sind doch einfach zu berechnen - wenn du die Position hast an der geklickt wurde, brauchst du nur die Distanz zum Mittelpunkt zu berechnen und mit dem Radius zu vergleichen ....
Was willst Du denn genau erreichen? Wenn Du ein Bild hast und auf ihm mehrere Klickpositionen simulieren willst, kannst du auch mit den Koordinaten des Mouseklicks arbeiten. Verrate mal ein bisschen mehr was Du machen magst.
Es hat sich alles geklärt und danke für Eure Hilfe. Ich hätte noch eine Frage: Warum funktioniert setBackground(Color c) auf dem Graphics-Objekt eines BufferedImage nicht?
Java:
BufferedImage im = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
im.createGraphics().setBackground(Color.GREEN);
g.drawImage(im, 0, 0, this); // g ist das Graphics-Objekt in der paintComponent() - Methode
das Bild wird zwar gezeichnet hat aber einen schwarzen Hintergrund. Warum?
Mir ist schon klar, dass ich einfach ein Rechteck zeichnen kann aber warum funktioniert setBackground() nicht? Was hat diese Methode denn dann für einen Sinn?
Steht doch in der API was die Methode genau macht:
http://download.oracle.com/javase/6/docs/api/java/awt/Graphics2D.html#setBackground%28java.awt.Color%29 hat gesagt.:
Sets the background color for the Graphics2D context. The background color is used for clearing a region. When a Graphics2D is constructed for a Component, the background color is inherited from the Component. Setting the background color in the Graphics2D context only affects the subsequent clearRect calls and not the background color of the Component. To change the background of the Component, use appropriate methods of the Component.