2013-05-01 73 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

相關問題