使用单数组方法的JTable 2D数组

时间:2019-06-10 10:24:12

标签: java swing jtable

我需要用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];
}

我知道我的代码是错误的,但是我会尽力说明其背后的逻辑。有什么想法吗?

1 个答案:

答案 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。