2012-12-13 163 views
2

對不起,第一次在這裏問一個問題。如何將一維數組添加到二維數組?

如果我有一個二維數組是這樣的:

int[][] array2d = {{1, 2, 3}, {6, 7, 8}}; 

如何添加這樣多一維數組:

int[] array1d = {3, 2, 1}; 
int[] array1d2 = {8, 7, 6}; 

讓我原來的二維數組變成這樣:

int[][] array2d = {{1, 2, 3}, {6, 7, 8}, {3, 2, 1}, {8, 7, 6}}; 

注意:這是用於添加來自JTex只要按下一個按鈕,就可以將tfield轉換爲JTable。所以,2d數組將被用作表內的數據。如果有更好的方法來實現這一點,我也會很感激。 =)

+1

您應該在2D陣列中分配足夠的行。初始化2D數組的方式不能超過2行。 – reprogrammer

+0

哦,我試圖避免這種情況。我想還有另一種將數據添加到表中的方法。我會尋找它。謝謝 –

+0

如果您想避免擔心數組長度,可以考慮使用[ArrayList](http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html), (或其他集合實現)。 – femtoRgon

回答

5

你的陣列:

int[][] array2d = {{1, 2, 3}, {6, 7, 8}}; 

是固定的大小,所以你必須創建具有足夠的容量來容納新值的副本:

int[][] newArray = Arrays.copyOf(array2d, 4); 
newArray[2] = array1d; 
newArray[3] = array1d2; 

要將數據添加到JTable數組必須首先轉換爲非原始類型,如Integer數組。一種選擇是使用Apache Commons:

model.addRow(ArrayUtils.toObject(array)); 

對於陣列的每一行。

+0

那麼,我想要做的是有一個用戶輸入數據的面板。當按下按鈕時,數據將被添加到表格中。 –

+0

你只需要將你的'Strings'分割成一個格式,在這個格式中你可以建立一個對象數組,這樣你就可以使用你的'addRow'調用。看看[示例](http://www.java2s.com/Code/JavaAPI/javax.swing.table/DefaultTableModeladdRowObjectrowData.htm)。這可能需要一個新的職位。 – Reimeus

+0

非常感謝,這幫了很大忙。 –

1

數組的大小是固定的,因此需要將數組的大小調整爲java.util.Arrays。

然後設置陣列位置

arra2d[index] = array1d; 

是有沒有使用

TableModel.addRow(dataArray); 

原因是什麼?

+0

我只是在學習如何使用JTables。從我所學到的內容來看,我認爲我應該用一列1d數組和數據二維數組來初始化JTables。我不知道什麼TableModel.addRow(dataArray);但我會考慮它! –