Java 向对象列表中的每个对象添加mouseListener/mouseEvent

Java 向对象列表中的每个对象添加mouseListener/mouseEvent,java,object,canvas,graphics,mouselistener,Java,Object,Canvas,Graphics,Mouselistener,我正在尝试向对象列表中的每个对象添加鼠标侦听器。我使用画布和图形g渲染一个帧和多个对象 这是我的主要类:它渲染帧和对象。这一切都很好,这里没有问题 import java.awt.Canvas; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferStrategy; public class Proj2 extends Canvas implements Runnable{ priv

我正在尝试向对象列表中的每个对象添加鼠标侦听器。我使用画布和图形g渲染一个帧和多个对象

这是我的主要类:它渲染帧和对象。这一切都很好,这里没有问题

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;

public class Proj2 extends Canvas implements Runnable{

    private final int[][] Init_board = 
          {{1,0,1,0,1,0,1,0},
           {0,1,0,1,0,1,0,1},
           {1,0,1,0,1,0,1,0},
           {0,1,0,1,0,1,0,1},
           {1,0,1,0,1,0,1,0},
           {0,1,0,1,0,1,0,1},
           {1,0,1,0,1,0,1,0},
           {0,1,0,1,0,1,0,1}};

    private final int[][] new_Game = 
          {{5,5,5,5,5,5,5,5},
          {5,5,5,5,5,5,5,5},
          {0,0,0,0,0,0,0,0},
          {0,0,0,0,0,0,0,0},
          {0,0,0,0,0,0,0,0},
          {0,0,0,0,0,0,0,0},
          {4,4,4,4,4,4,4,4},
          {4,4,4,4,4,4,4,4}};

    public static final int WIDTH = 640;
    public static final int HEIGHT = 640;
    private final int initPieces = 8;

   private Thread thread;
  private boolean running = false;

    private Board board;
    private GameHandler handler;    

    public Proj2(){

        handler = new GameHandler();
        new Window(WIDTH,HEIGHT,"Checkers",this);
        board = new Board(WIDTH,HEIGHT,Init_board);

         for(int i = 0; i < 8; i++){
            for(int j = 0; j < 8; j++){

              handler.newObject(new Player(j * (640 / initPieces),i * (640 /
              initPieces),initPieces,ID.playerOne,new_Game[i][j],handler));

             }
         }
为所有的代码道歉。我尽量少发帖子

我尝试为每个对象添加一个mouslistener,这样它们就可以拥有自己的MouseEvent

因此,当单击它时,它会为每个对象返回一个唯一的ID

如果您想知道单击了哪个对象,可以从MouseeEvent获取该信息:

GameObjects temp = (GameObjects)e.getSource();

我试着尽可能少地发帖!!这句话伤害了我,这很有帮助,我终于明白了,并开始工作。再次感谢你!
import java.awt.Graphics;
import java.util.LinkedList;

public class GameHandler {

    LinkedList<GameObjects> gameObjects = new LinkedList<GameObjects>();

    public void tick(){
        for(int i = 0; i < gameObjects.size(); i++){
            GameObjects temp = gameObjects.get(i);
            temp.tick();
        }
    }

    public void render(Graphics g){
        for(int i = 0; i < gameObjects.size(); i++){
            GameObjects temp = gameObjects.get(i);
            temp.render(g);
        }
    }

    public void newObject(GameObjects object){

        this.gameObjects.add(object);

    }

    public void deleteObject(GameObjects object){

        this.gameObjects.remove(object);
    }
}
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.util.LinkedList;


    public class MouseInput implements MouseListener {

            private GameHandler handler;
            private GameObjects object;

            public MouseInput(GameObjects Object){

            this.object = Object;


            }



            @Override
            public void mouseClicked(MouseEvent arg0) {

            }

            @Override
            public void mouseEntered(MouseEvent e) {

            }

            @Override
            public void mouseExited(MouseEvent arg0) {

            }

            @Override
            public void mousePressed(MouseEvent e) {



                int x = e.getX();
                int y = e.getY();
                int b = e.getClickCount();

                int c = e.getID();

                /*NOT SURE WHAT TO DO HERE*/


                /*THIS JUST MOVES THE OBJECT WHERE I CLICK, BUT WHEN I HAVE MULTIPLE OBJECTS AND I CLICK, ONLY ONE OBJECT MOVES AND THE REST DISAPEAR*/
                    if(b == 2){
                        if(object.getID() == ID.playerOne ){

                            object.setX(x);
                            object.setY(y);
                        }
                    }



            }





            @Override
            public void mouseReleased(MouseEvent arg0) {
                // TODO Auto-generated method stub

            }

        }
for(int i = 0; i < handler.gameObjects.size(); i++)
{
    GameObjects temp = handler.gameObjects.get(i);
    this.addMouseListener(new MouseInput(temp));
}
//this.addMouseListener(new MouseInput(temp));
temp.addMouseListener(new MouseInput(temp));
GameObjects temp = (GameObjects)e.getSource();