2015-05-03 56 views
0

我想補一組雙元素,與JTable中列擺放的元素,我試着用「for」循環,但該算法是不相關的:如何通過JTable列元素填充一組元素?

for (int i = 0 ; i < nRow ; i++) 
{ 
    double ad [ ] = { (double)dtm.getValueAt(i, 1)}; 
} 

的問題是,當「i」變量等於一個新值(例如1或2),最後一個值被新值替換。

什麼算法允許填充集?

+0

Arrays現在你正在使用的陣列。你想使用一個集合還是一個數組? – fdsa

+0

我想要得到像這樣的結果ad [] = {1,4,5,8,9 ....等等}這只是一個例子,但它是我希望最後得到的那種結果,因爲數字在表格的大括號之間 – user4830457

+0

在Java中,那些{}表示一個數組(__not__是一個像數學的集合)。數組有固定的大小,你必須添加索引。 http://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html – fdsa

回答

1

感謝@camick和@madprogrammer更新了代碼,根據需要這可能是最佳的。

public Object[] getColumnData(JTable table, int targetColIndex) { 
DefaultTableModel dtm = (DefaultTableModel) table.getModel(); 
int nRow = dtm.getRowCount(), nCol = dtm.getColumnCount(); 
if(table== null) 
    return null; 
if(targetColIndex > nCol) 
    return null; 
Object[] tableData = new Object[nRow]; 
for (int i = 0 ; i < nRow ; i++) 
    tableData[i] = dtm.getValueAt(i,targetColIndex); 
return tableData; 
} 

嗨檢查上述可能會幫助你。

+0

一種過度殺傷因爲op只能從第一列中獲取數值 – MadProgrammer

+0

如果您查看OP的最後2個問題,您將看到OP需要表中3個不同列的數據。所以這是正確的方法,但是您的方法應該接收表和列索引,並返回該列的數組。然後,方法可以被調用3次。修復方法,你會得到我的投票。 – camickr

+0

那麼,要求是返回數組中的double值,而不是對象,但我反正投了票。 – camickr

0

您需要將陣列的個體價值的每個元素分配,例如...

TableModel dtm = ...; 
int nRow = dtm.getRowCount(); 
double ad[] = new double[nRow]; 
for (int i = 0 ; i < nRow ; i++) 
{ 
    ad[i] = (double)dtm.getValueAt(i, 1); 
} 

更多細節