2013-05-01 66 views
1

所以具体来说,我有一个填充JLabels的二维数组。如果从另一种方法,我得到一个JLabel,我们知道肯定存在于该数组中,如何获得数组中的标签坐标。的代码 部分是(P.S该数组是[9] [5]):我怎样才能找到一个对象在二维数组中的位置?

labelsArrayColumns[1][1] = jLabel11; 
    labelsArrayColumns[2][1] = jLabel21; 
    labelsArrayColumns[3][1] = jLabel31; 
    labelsArrayColumns[4][1] = jLabel41; 
    labelsArrayColumns[5][1] = jLabel51; 
    labelsArrayColumns[6][1] = jLabel61; 
    labelsArrayColumns[7][1] = jLabel71; 
    labelsArrayColumns[8][1] = jLabel81; 
    labelsArrayColumns[9][1] = jLabel91; 

所以,如果我有jLabel81我怎样才能在阵列它是哪个位置发现的? 我们期待[8] [1]。

回答

1

我建议两种方式:
1)在整个二维阵列工作,直到你找到的每一个元素与labelsArrayColumns[i][j].equals(jLabel81)进行比较
2)覆盖的JLabel类: 只需添加一个方法来保存和检索JLabel在你的阵列中的位置

+1

所以你的意思是这样的,是正确的? (int j = 1; j <5; j ++)if(labelsArrayColumns [i] [0] j] .equals(actionLabel)){ return labelsArrayColumns [i] [j]; } } } return null; }' – hedgehog 2013-05-01 18:33:06

+1

好吧,是的,这是我的第一个建议。但是你的例子会返回特定的对象(我认为你已经知道了?)。当你想知道位置时,我会在循环外声明i和j,以便在找到对象后可以读取它们的值:'int i,j; outerloop: 为(I = 0; I <9;我++){ 对于(j = 0;Ĵ<5; J ++) 如果(labelsArrayColumns [i] [j] .equals(actionLabel)打破outerloop; } ' – 2013-05-01 19:42:49

+1

但只有当它发现标签将返回它,否则它会继续寻找它,它会以某种方式返回它,因为它存在,所以它会找到它......实际上没有理由使用“打破outerloop;“ – hedgehog 2013-05-01 19:55:54

相关问题