2012-09-06 28 views
-2

我在netbeans中使用jTable。选择组合框后,如果我选择了员工ID 1,它将在jTable中显示emp 1的所有数据。但是,当我选择emmployee ID 2 JTable的下一次显示EMP id为1的单值及以下如何在jTable中显示数据在JAVA中附加旧值

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; 
    } 
} 

我的代码被赋予EMPID 2. 所有其他值告诉我解决办法,如果有人知道。

+2

很难说任何切肉刀,为更好的帮助尽早发布[SSCCE](http://sscce.org/) – mKorbel

+0

oky,但你能告诉我,我可以清除jTable,而点击组合框 – Amruta

+0

table.setModel(new YourTableModel ()); – MadProgrammer

回答

1

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

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

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