java - MouseListener 在 JLabel 中不起作用

标签 java swing jlabel layout-manager mouselistener

我正在编写游戏,我的项目结构如下:

我们有一个抽象类,所有其他类都继承自它。

    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/

相关文章:

java - 无法在索引 0 处解析字符串

java - "public void actionPerformed"中如何使用JLabel

java - 如何刷新我的 JLabel 图标?

java - GraphicsDevice 和 JOptionPane 问题

java - 为什么 JScrollBar 与可编辑组件共存时不响应箭头键击?

java - 如何正确地将 JPanel 放置到 JFrame 上?

java - Java 运行时环境 : SIGSEGV, libjvm 检测到 fatal error

java - bin文件加载进度条

java - 如何从另一个类的静态方法更改静态变量的值

java - 读取jtable选定行的值