如何使用jtable第一列中的复选框将数据库中的数据显示到jtable?

时间:2014-01-10 13:01:18

标签: java swing jtable

我知道如何填充jtable,我准备了上面的代码,工作正常。但问题是它在另一个项目中工作,但在我当前的项目中使用bot。这两个项目的代码都是一样的。这是代码... purchaswtab是已经使用swing调色板创建的表名。并且在Item Master的退出按钮的情况下执行此功能。 数组ap的数组元素定义为我必须从结果集中的给定位置获取它们。

public void populatetable(ItemMaster imm)
{
    imm.dispose();
    String t[][]=new String [30][10];
    int[] ap={19,1,2,4,18,16,17};
    Object[] h1=new Object[7];
    String a1,a2;
    int j=0,i=1;
    int len=0;
    try
     {            
        st=fun.connect1();           

        String query="select * from Temp_Purchase";
        ResultSet rs=st.executeQuery(query);       

        ResultSetMetaData rsmd=rs.getMetaData();

        while(rs.next())
        {
            int k=0;
            for(i=1;i<=7;i++,k++ )
            {
                t[j][i-1]=rs.getString(ap[k]);
                System.out.println(t[j][i-1]);
            }
            j++;
            len++;
        }

        fun.close();
     }
    catch(Exception e)
    {
        fun.close();
        System.out.println("Exception:"+e);
    }

    DefaultTableModel de=(DefaultTableModel)purchaseTab.getModel();
    purchaseTab=new JTable(de);



    //Code for filling data into table

    for(i=0;i<len;i++)
    {
        for(j=1;j<=7;j++)
        {                
            h1[j-1]=t[i][j-1];
        }

        if(h1[0]=="0")
        {         
            h1[0]=Boolean.FALSE;         
        }
        de.insertRow(i,h1);            
    }
    //jsp.setViewportView(Table);
}

2 个答案:

答案 0 :(得分:2)

  • while(rs.next())内的evetything替换为de.addRow(new Object[..., ..., ...]);

  • 您必须将DefaultTableModel de声明为局部变量,在调用fun之前初始化

  • 然后将DefaultTableModel de传递给JTable,例如myTable(de);myTable.setModel(de)

  • 使用Object[]代替String[]的限制,然后您可以store various data type in DefaultTableModel

答案 1 :(得分:0)

来自@ mKorbel的回答

创建并添加DefaultTableModel,如:

DefaultTableModel model=new DefaultTableModel(data,header);
JTable table = new JTable(model);

这里的数据是双向量,标题是单向量。

data = get(field);
Object[] d={data.get(i).get(0),data.get(i).get(1),data.get(i).get(2)};
model.addRow(d);

从数据库中获取数据

get(field){
//Your Database connection
//Get data into vector
//return vector
}