MouseListener für Objekte auf einem Frame

Kingkook

Aktives Mitglied
Hi liebe Com,

ich habe folgende Frage, von welcher ich nicht weiß wie ich sie einfach erklären soll,obwohl es wohl eine sehr simple Angelegeneheit ist:

Ich erstelle ein Frame auf dem die Oberfläche gezeichnet wird.Mithilfe von Buttons erzeuge ich neue Tower-Objekte die ich irgendwo auf die Oberfläche ziehen kann, und dort ablegen lasse.Jetzt möchte diesen neuen Objekten einen MouseListener hinzufügen, welcher darauf reagiert wenn ich diese Objekte mit der Maus anklicke.

Wie genau gehe ich da vor?Muss jedes Objekt der neu erstellten Klasse einen Maus Listener implementieren?Oder muss ich den MauListener des Frame benutzen und immer schauen wo genau sich der Zeiger gerade befindet?

Hier ein Teil des Codes zur erstellung der Tower-Objekte

Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.Timer;
import java.awt.MouseInfo.*;


public class Towers extends Graphicelements implements ActionListener,MouseListener
    {

         Timer timer;
         Rectangle2D.Double range;
         public Shoots startShoot;
         public int fireRate;
         static public int actionRadius;
         public int strenght;
         public int whichTower;
         public static int rememberEnemy=0;

         public Towers(BufferedImage[] i,double x, double y, long delay, GamePanel p,boolean openField,int pwhichTower)
            {
                super(i, x, y, delay,  p,openField);
                whichTower = pwhichTower;

                timer = new Timer(fireRate,this);
                range = new Rectangle2D.Double(this.getX()-actionRadius, this.getY()-actionRadius, getWidth()+(2*actionRadius), getHeight()+(2*actionRadius));
            }

lg Kooki
 
Zuletzt bearbeitet:
mouselistener implementieren müssen die neuen objekte denk ich nicht.... was sind das für objekte? du könntest sie von einer anderen klasse mit addMouseListener - methode erben lassen...
mit position bestimmung geht natürlich auch, is vllt. sogar besser, weil du nicht Unmengen an Listenern hast, die der edt bearbeiten muss...

lg
 
mit position bestimmung geht natürlich auch, is vllt. sogar besser, weil du nicht Unmengen an Listenern hast, die der edt bearbeiten muss...

Unmengen an Listenern wird es kaum geben. Wenn die Anzahl der Listener zum Problem wird, ist nämlich schon längst die Anzahl der Komponenten für das Auge des Betrachters zu einem viel größeren Problem geworden 😀 .

Gruß,
André
 
Das Problem ist,dass ich momentan in der Klasse in der ein Tower-Objekt erstellt wird sage:

frame.addMouseListener(tower);

in der Klasse Tower stehen die Methoden für MouseClicked,Entered etc.

es ist aber egal wohin ich klicke,es kommt immer der Methodenaufruf, und zwar genau sooft, wie es Tower-Objekte gibt.
 

Neue Themen


Zurück
Oben