我正在编写游戏,我的项目结构如下:
我们有一个抽象类,所有其他类都继承自它。
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;
}
}
还有一些类,如RedBird,继承自Bird类并实现了抽象函数。
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) {
}
}
我在 JPanel 中添加了 RedBird 类的一个对象,但是当我单击该对象时,MouseListener
不起作用。问题是什么 ?谁能给我一个解决方案吗?
提前致谢:)
最佳答案
您尚未将鼠标监听器“添加”到任何 JComponent。这就是它不起作用的原因。 在 Bird 类的构造函数中添加以下代码:
this.addMousListener(this);
关于java - MouseListener 在 JLabel 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176565/