-2

我在 netbeans 中使用 jTable。选择组合框后,如果我选择员工 id 1,它会在 jTable 中显示 emp 1 的所有数据。但是下次当我选择 emmployee id 2 jTable 时会显示 emp id 1 的单个值和 empid 2 的所有其他值。我的代码如下所示

Connect c       = new Connect();//connection to database
con             = (Connection) c.getConnection();
st              = (Statement)con.createStatement();
String ddate    = (String)text.getSelectedItem();
System.out.println("id " +ddate);
rs = st.executeQuery("select e.employee_id,e.`first_name`, i.outtime, i.outtime_date from tbl_employee e,tbl_outtime i  where e.employee_id=i.outtime_emp_id and i.`outtime_date` LIKE '%/"+month2+"/"+year1+"'and outtime_emp_id="+ddate);
while(rs.next())
{
    String dat1=rs.getString("outtime_date");
    String e1=rs.getString("employee_id");
    System.out.println(e1);
    st33=(Statement) con.createStatement();      
    rs33=st33.executeQuery("select i.intime, i.intime_date from tbl_employee e,tbl_intime
    i where e.employee_id=i.intime_emp_id and i.`intime_date`='"+dat1+"' and 
    i.intime_emp_id="+e1);
    if(rs33.next())
    {
        int emp=rs.getInt("employee_id");
        System.out.println(emp);
        String name=rs.getString("first_name");
        String dept=rs33.getString("intime");
        String desig=rs.getString("outtime");
        String join=rs33.getString("intime_date");
        jTable1.setValueAt(emp, cnt, 0);
        jTable1.setValueAt(name, cnt, 1);
        jTable1.setValueAt(dept, cnt, 2);
        jTable1.setValueAt(desig, cnt, 3);
        jTable1.setValueAt(join, cnt, 4);
        cnt=cnt+1;
    }
}

如果有人知道,请告诉我解决方案。

4

3 回答 3

3
于 2012-09-06T05:53:42.350 回答
1

使用 TableModel 添加行。

http://docs.oracle.com/javase/tutorial/uiswing/components/table.html

样品。

于 2012-09-06T05:56:36.880 回答
1

与所有其他 Swing 组件一样,表格由两部分组成:视图部分 (the JTable) 和模型部分 (the TableModel)。当模型表明它已被抛出事件更改时,视图会更新。有关详细信息,请参阅表格教程

因此,对于您的用例,您可以调整现有的TableModel或创建一个新的。我个人会选择创建一个新的,因为您正在使用数据库。

请注意,Swing 组件只能在 Event Dispatch 线程上访问和修改,并且不应在该线程上发生长时间运行的任务(如查询数据库)(请参阅Swing 并发教程)。这就是为什么我建议创建一个新的TableModel. 您可以在用于查询数据库的工作线程上创建此模型,并在事件调度线程上一次性替换模型。这个SwingWorker类最适合这个。

于 2012-09-06T08:06:33.277 回答