Java MouseListener一旦添加到另一个类就无法工作

时间:2013-02-08 19:11:48

标签: java user-interface jlabel mouselistener

基本上我有两个类,一个用于在游戏中创建单位的Infantry类,以及一个用于绘制所有内容(即单位,建筑物等)的Map类屏幕。我的MouseListener类中有一个Infantry,它在点击时获取鼠标的坐标,将图像的x和y变量设置为那些,然后重新绘制屏幕上的图像。当我直接在我的JFrame类中创建一个Infantry对象时,这样可以正常工作,但是我无法看到Map类正在被绘制。当我在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();
    }

}

}

0 个答案:

没有答案