我想在此代码

时间:2017-01-13 01:06:25

标签: java arrays

for (j = 0; j < 36; j++)
      {
        System.out.println("Card:" + j + " Index:" + j);
        cardInfo[j].addMouseListener(new MouseAdapter()
          {
            @Override
            public void mouseClicked(MouseEvent e)
              {
                System.out.println("Index Given:" + j);
                makeCard(j);
              }
          });
      }

我有这段代码,想在

中打印出数组元素的编号
System.out.println("Index Given:" +j); 

cardInfo[]是一个JLabel数组。

输出总是给出:

Index Given: 36.

1 个答案:

答案 0 :(得分:0)

当您调用鼠标单击处理程序时,j已经迭代到36。您正面临与关闭相关的问题(这些天真的很有趣的话题)。试试这个:

for(j = 0; j < 36; j++){ 
        System.out.println("Card:" + j + " Index:" + j);
        int indexOfCard = j;
        cardInfo[j].addMouseListener(new MouseAdapter(){
        @Override 
        public void mouseClicked(MouseEvent e){ 
                System.out.println("Index Given:" + indexOfCard);
                makeCard(indexOfCard);
                }
        });
}