如何在JAVA中的jTable中显示数据它附加旧值

时间:2012-09-06 05:35:30

标签: java swing netbeans combobox jtable

我在netbeans中使用jTable。选择组合框后,如果我选择员工ID 1,则显示jTable中emp 1的所有数据。但是下次当我选择emmployee id时,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;
    }
}

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

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

使用TableModel添加行。

阅读

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

样品。

答案 2 :(得分:1)

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

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

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