Java 如果我有一个使用mouselistener的标签数组列表,那么单击标签时如何获取索引?

Java 如果我有一个使用mouselistener的标签数组列表,那么单击标签时如何获取索引?,java,graphics,mouselistener,Java,Graphics,Mouselistener,我在做纸牌游戏。它有一个对应于玩家拥有的每张牌的jLabel数组列表 单击卡jlabel时,如何获取单个jlabel的索引,以便调用使用给定索引播放卡的playcard()方法 JLabel temp = new JLabel(icon); temp.setBounds(new Rectangle(new Point(shift, 550), temp.getPreferredSize())); temp.addMouseListener(this

我在做纸牌游戏。它有一个对应于玩家拥有的每张牌的jLabel数组列表

单击卡jlabel时,如何获取单个jlabel的索引,以便调用使用给定索引播放卡的playcard()方法

JLabel temp = new JLabel(icon);
            temp.setBounds(new Rectangle(new Point(shift, 550), temp.getPreferredSize()));
            temp.addMouseListener(this);
            currentdeck.add(temp);
//for loop that adds each jlabel to currentdeck

似乎您想要使用ArrayList的
indexOf()
方法。

您似乎想使用ArrayList的
indexOf()
方法。

不要像这样使用
MouseInfo
MouseEvent
已经向您传递了您需要的信息。不要像这样使用
MouseInfo
MouseEvent
已经向您传递了您需要的信息是的,但是arraylist中可以有多张相同的卡,这就是问题所在problem@Derec重复的卡是否使用相同的
JLabel
?如果一个玩家有同一张牌的两个不同副本,那么您的代码是使用相同的
JLabel
表示这两个副本,还是为游戏中的每个牌对象创建一个不同的
JLabel
?因为
JLabel.equals()
方法是从
Object
继承而来的,所以即使有两个
JLabel
对象具有相同的文本,它们也不会相等。谢谢,我认为这会起作用。谢谢你的解释@德里克:没问题,如果您还有其他问题,请随时询问。但arraylist中可能有多张相同的卡片,这是problem@Derec重复的卡是否使用相同的
JLabel
?如果一个玩家有同一张牌的两个不同副本,那么您的代码是使用相同的
JLabel
表示这两个副本,还是为游戏中的每个牌对象创建一个不同的
JLabel
?因为
JLabel.equals()
方法是从
Object
继承而来的,所以即使有两个
JLabel
对象具有相同的文本,它们也不会相等。谢谢,我认为这会起作用。谢谢你的解释@德里克:没问题,如果你还有其他问题,尽管问
public void mousePressed(MouseEvent arg0) 
    {
        JLabel label = (JLabel)arg0.getSource();
        //int i = (how would I get the index)?

if(MouseInfo.getPointerInfo().getLocation().getX()>=label.getX()&&MouseInfo.getPointerInfo().getLocation().getY()>=label.getY())
        {
            UNO.playcard(int i);
        }
    }