1

基本的にInfantry、ゲームでユニットを作成するために使用されるMapクラスと、すべて (ユニット、建物など) を画面に描画するために使用されるクラスの 2 つのクラスがあります。私MouseListenerInfantryクラスには、クリック時にマウスの座標を取得し、画像の x 変数と y 変数をそれらに設定してから、画面に画像を再描画する があります。InfantryJFrame クラスでオブジェクトを直接作成すると、これは正常に機能しますが、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();
    }

}

}

4

0 に答える 0