Java GridLayout表示JLabels问题的ArrayList

Java GridLayout表示JLabels问题的ArrayList,java,arraylist,Java,Arraylist,我正在找人帮我解决一个问题。我正在GUI上创建一个GridLayout,在每个网格中都会有一个JLabel。除此之外,我还有一个ArrayList,其中包含将在每个网格中显示的图像 我试图做的是,当我单击一个特定的网格时,它将从ArrayList中添加一个图像,并将其放置在网格位置。我想要的是左键单击在ArrayList中添加项目,右键单击删除列表中的项目 ArrayList和GUI代码位于不同的类中,ArrayList在main方法中实现。我试过了,但没有用,我似乎无法让网格代表列表 基本上,

我正在找人帮我解决一个问题。我正在GUI上创建一个GridLayout,在每个网格中都会有一个JLabel。除此之外,我还有一个ArrayList,其中包含将在每个网格中显示的图像

我试图做的是,当我单击一个特定的网格时,它将从ArrayList中添加一个图像,并将其放置在网格位置。我想要的是左键单击在ArrayList中添加项目,右键单击删除列表中的项目

ArrayList和GUI代码位于不同的类中,ArrayList在main方法中实现。我试过了,但没有用,我似乎无法让网格代表列表

基本上,我需要一个GridLayout来提供ArrayList的可视化表示,可以通过鼠标交互操作

谁能给我指出正确的方向吗

网格的代码:

for (int i = 0; i < 12; i++) 
    {
        JLabel assetLabel = new JLabel("Test"+(i+1));

        System.out.println("assetLabel"+(i));

        assetLabel.addMouseListener(new ParcelInfo(i));

        assetLabel.setBackground(Color.WHITE);
        assetLabel.setOpaque(true);
        assetGrid.add(assetLabel);
    }

这就是您为它定义侦听器的方式

public List<Image> arrayList = new ArrayList<>();
public OtherClassWithArray foo = new OtherClassWithArray();

jLabel.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            if(e.getButton() == MouseEvent.BUTTON1) // left click
            jLabel.setIcon(arrayList.get(xyz)); // access arraylist here
            // jLabel.setIcon(foo.getArrayList.get(xyz); // access arrayList from other class
            else // right click
            // do smth here
        }
    });
public List arrayList=new arrayList();
public OtherClassWithArray foo=新的OtherClassWithArray();
jLabel.addMouseListener(新的MouseAdapter(){
@凌驾
公共无效mouseClicked(MouseEvent e){
如果(e.getButton()==MouseEvent.BUTTON1)//左键单击
jLabel.setIcon(arrayList.get(xyz));//在此处访问arrayList
//jLabel.setIcon(foo.getArrayList.get(xyz);//从其他类访问arrayList
else//右键单击
//你在这儿玩吗
}
});

i编辑以向GridLayout显示。它完美地显示了网格,但我有一个问题,那就是让我的图像数组列表在哪个网格上进行操作。
JList
JTable
…因此网格中的每个jLabel都有一个侦听器?然后在包含Imag的类中eIcon有没有抓取相关的ArrayList图标?@BeanShares是的,这是一种方法。很好,我会尝试并实现它。我认为唯一不起作用的是,我的ArrayList是在main方法中创建的,如果我调用ArrayList的另一个版本,它不是空的吗?我如何将当前ArrayList作为一个p传递arameter?@BeanShares您不能将其作为参数传递。但您可以访问它,请查看我的编辑。如果我调用了新的ArrayList,我将丢失当前列表?我无法使用其他类中使用的当前ArrayList吗?
public List<Image> arrayList = new ArrayList<>();
public OtherClassWithArray foo = new OtherClassWithArray();

jLabel.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            if(e.getButton() == MouseEvent.BUTTON1) // left click
            jLabel.setIcon(arrayList.get(xyz)); // access arraylist here
            // jLabel.setIcon(foo.getArrayList.get(xyz); // access arrayList from other class
            else // right click
            // do smth here
        }
    });