2012-06-24 6 views
3

Je suis la programmation du jeu que la structure de mon projet est la suivante:MouseListener ne fonctionne pas dans JLabel

Nous avons une classe abstraite que tous les autres sont hérités de lui.

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; 
     } 
    } 

Et certaines classes comme RedBird qui ont hérité de la classe des oiseaux et met en œuvre la fonction abstraite ainsi.

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) { 
     } 
    } 

j'ai ajouté un objet de la classe RedBird dans JPanel, mais quand je clique sur cet objet, MouseListener ne fonctionne pas. Quel est le problème ? Quelqu'un pourrait-il me donner une solution?

Merci à l'avance :)

+3

* « Quel est le problème? » * Probablement mises en page et tailles. Pour quelque chose au-delà d'un WAG, publiez un [SSCCE] (http://sscce.org/). –

+1

@AndrewThompson Qu'est-ce que WAG? –

+0

Pourriez-vous poster le code où vous ajoutez le 'RedBird' dans' JPanel'? – Genzer

Répondre

5

Vous n'avez pas « ajouté » votre auditeur de la souris sur un JComponent. C'est pourquoi ça ne marche pas. Dans votre constructeur de la classe des oiseaux ajoutez le code suivant:

this.addMousListener(this); 
+0

J'ai ajouté 'this.addMouseListener (this);' dans ma classe d'oiseaux et super classe, mais ce n'est pas le travail! : | –

+0

éditez votre question et placez le code dans lequel vous créez l'objet RedBird. Je ne trouve aucune erreur dans ce code. – vedant1811