我需要用Jtable创建2D字符串数组。
首先,我需要创建一个数组并将其包含到data [] []中
例如
基于教程中的给定代码
String data[][]={ {"101","Amit","670000"},
{"102","Jai","780000"},
{"101","Sachin","700000"}};
String column[]={"ID","NAME","SALARY"};
JTable jt=new JTable(data,column);
我完全理解本教程,但是我必须根据需要自定义数据[] []。香港专业教育学院试图将data [] []分解为单个数组的很多可能性,但我一直失败。我有一个数据库,它将提取所有信息。
例如
String[] dataQuery = { callName() , callCost() };
可以说callname()调用“ john”和“ bob”,而callCost()调用“ 22”,“ 44”。 有了这些数据,我正在努力实现 {{“ john”,“ 22”},{“ bob”,“ 44”}};
甚至可以为下一行创建下一个值。
String data[][];
for(int i = 0; i <dataQuery.length; i++){
data = dataQuery[i];
}
我知道我的代码是错误的,但是我会尽力说明其背后的逻辑。有什么想法吗?
答案 0 :(得分:1)
可以说callname()调用“ john”和“ bob”,而callCost()调用“ 22”,“ 44”。
首先,这没有任何意义。您无需使用数据库来获取所有名称的数组,然后获取所有成本的数组。每个查询应将名称/费用作为单行数据返回。然后,您处理每一行数据。
我需要使用Jtable创建2D字符串数组
不,你不知道。那只是将数据添加到DefaultTableModel的一种方法。
因此,我们先创建一个空的DefaultTableModel:
String column[] = {"ID", "NAME", "SALARY"};
DefaultTableModel model = new DefaultTableModel(column, 0);
上面创建了一个DefaultTableModel
,没有任何数据。现在,您可以使用DefaultTableModel的addRow(...)
方法来一次添加一行数据。
String[] dataQuery = { callName() , callCost() };
该代码对我也没有任何意义。如果您的callName和callCost方法返回数组,那么您的代码应类似于:
String[] names = callName();
String[] costs = callCost();
然后,您可以遍历数组并将数据添加到表模型中:
for (int i = 0; i < names.length; i++)
{
Vector row = new Vector(3);
row.add( ...); // add the id
row.add( names[i] );
row.add( costs[i] );
model.addRow( row );
}
但是,即使上述解决方案也没有任何意义。通常,您不对数据库执行多个查询以获取所有“名称”,然后不进行第二次查询以获取所有“成本”。通常,您的查询类似于:
"Select ID, Name, Salary from databaseName"
然后,从查询中返回一个ResultSet
,结果集中的每一行都包含3个数据。然后,您只需一次遍历ResultSet一次就可以将每一行数据添加到表模型中。
搜索论坛/网站。有很多示例显示了如何使用ResultSet创建TableModel。