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