2015-05-03 60 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); 
} 

更多细节