基本的にInfantry
、ゲームでユニットを作成するために使用されるMap
クラスと、すべて (ユニット、建物など) を画面に描画するために使用されるクラスの 2 つのクラスがあります。私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();
}
}
}