Java MouseListener添加到另一个类后不工作

Java MouseListener添加到另一个类后不工作,java,user-interface,jlabel,mouselistener,Java,User Interface,Jlabel,Mouselistener,基本上我有两个类,一个是步兵类,用于在游戏中创建单位,另一个是地图类,用于在屏幕上绘制所有东西(即单位、建筑等)。我在我的步兵类中有一个MouseListener,它在单击鼠标时获取鼠标坐标,将图像的x和y变量设置为这些变量,然后在屏幕上重新绘制图像。当我在JFrame类中直接制作一个步兵对象时,这个效果很好,但是我看不到前面绘制的地图类。当我在Map类本身(这是我的主要目标)中创建对象时,MouseListener不起作用,因为它不会注册单击或任何方法(我尝试了控制台打印输出来测试这一点)。现

基本上我有两个类,一个是
步兵
类,用于在游戏中创建单位,另一个是
地图
类,用于在屏幕上绘制所有东西(即单位、建筑等)。我在我的
步兵
类中有一个
MouseListener
,它在单击鼠标时获取鼠标坐标,将图像的x和y变量设置为这些变量,然后在屏幕上重新绘制图像。当我在JFrame类中直接制作一个
步兵
对象时,这个效果很好,但是我看不到前面绘制的
地图
类。当我在
Map
类本身(这是我的主要目标)中创建对象时,
MouseListener
不起作用,因为它不会注册单击或任何方法(我尝试了控制台打印输出来测试这一点)。现在我有点不明白为什么这样做行不通,如果有任何帮助,我将不胜感激。 步兵等级:

public class Infantry extends JLabel{

private Image img;
private int bx;
private int by;
private MouseListener move = new Move();

public Infantry(String file, int Bx, int By){
    img = new ImageIcon(file).getImage();
    bx = Bx;
    by = By;
    setOpaque(false);
    addMouseListener(move);
}

public void paintComponent(Graphics g){

    super.paintComponents(g);

    g.drawImage(img, bx, by, null);

}

private class Move implements MouseListener{

    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
        bx = e.getX();
        by = e.getY();
        repaint();
    }

}

}

请发布一个SSCCE来显示问题。您应该替代
mouseClicked(MouseEvent e)
。我已经完成了所有工作,但没有任何工作。@图例:“传递mouseListeners”是什么意思?为什么要替代JLabel的paintComponent()方法来绘制图像?只需在标签上添加一个ImageIcon,然后让标签进行绘制。无论如何,您肯定不会调用super.paintComponents()。注意“s”。