MouseListener werkt niet in JLabel

Ik programmeer de game die de structuur van mijn project als volgt is:

We hebben een abstracte klasse waarvan alle anderen worden geërfd.

    public abstract class Bird extends JLabel implements MouseListener {
        private static final long serialVersionUID = 1L;

        private int M_weight;
        private int M_radius;
        private long M_bornTime;
        private int M_maxBirdPower;
        private BirdState M_birdState;
        private boolean B_prepareToShoot;

        public Bird(int weight, int radius, long bornTime, int maxBirdPower,
                BirdState birdState) {
            this.M_weight = weight;
            this.M_radius = radius;
            this.M_bornTime = bornTime;
            this.M_maxBirdPower = maxBirdPower;
            this.M_birdState = birdState;
            this.B_prepareToShoot = false;
            this.addMouseListener(this);
        }

        public BirdState getBirdState() {
            return M_birdState;
        }
    }

En sommige klassen als RedBird die hebben geërfd van de klasse Bird en ook de abstracte functie implementeren.

    public class RedBird extends Bird {
        private static final long serialVersionUID = 1L;

        public RedBird(int weight, int radius, long bornTime, int maxBirdPower,
                BirdState birdState) {
            super(weight, radius, bornTime, maxBirdPower, birdState);
        }

        @Override
        public void mouseClicked(MouseEvent arg0) {
                System.out.println("Clicked");
        }

        @Override
        public void mouseEntered(MouseEvent arg0) {
        }

        @Override
        public void mouseExited(MouseEvent arg0) {
        }

        @Override
        public void mousePressed(MouseEvent arg0) {
        }

        @Override
        public void mouseReleased(MouseEvent arg0) {
        }
    }

Ik heb een object uit de RedBird-klasse in JPanel toegevoegd, maar wanneer ik op dit object klik, werkt MouseListener niet. Wat is het probleem ? Kan iemand me een oplossing geven?

Bij voorbaat dank :)

3
@AndrewThompson Wat is WAG?
toegevoegd de auteur Radu Murzea, de bron
@AndrewThompson Bedankt voor de toewijding :). Ik zag het echter, omdat ik terugkwam op de vraag.
toegevoegd de auteur Radu Murzea, de bron
MouseListener werkt goed voor mij. Ik heb de aanbeveling voor een sscce opgeschort. Je moet wat werk doen om het probleem te isoleren. Zodra u dat doet, identificeert u het probleem en de oplossing waarschijnlijk zelf.
toegevoegd de auteur Hovercraft Full Of Eels, de bron
"Wat is het probleem?" Waarschijnlijk lay-outs en formaten. Plaats iets anders dan een WAG op een SSCCE .
toegevoegd de auteur Andrew Thompson, de bron
Lees de conventies voor java-naamgeving en blijf bij hen.
toegevoegd de auteur kleopatra, de bron
Kunt u de code plaatsen waar u de RedBird toevoegt in JPanel ?
toegevoegd de auteur Genzer, de bron

1 antwoord

Je hebt je muislistener niet "toegevoegd" aan een JComponent. Dat is waarom het niet werkt. Voeg in de constructor van je vogelklasse de volgende code toe:

this.addMousListener(this);
5
toegevoegd
Ik heb this.addMouseListener (this); toegevoegd in mijn vogelklasse en superklasse, maar het is geen werk! : |
toegevoegd de auteur Hossein Mobasher, de bron
bewerk uw vraag en plaats de code op de plek waar u het RedBird-object aan het maken bent. Ik kan in deze code geen fouten vinden.
toegevoegd de auteur vedant1811, de bron