2013-05-01 131 views
0

的实例我想填充我的JTable与电影。JTable填充类

我有类Film

而且从DB我读我的电影记录和创建电影的新实例,然后我给他们向量。

public ResultSet select(String table, String where) { 
    try {  
     Statement sta = con.createStatement(); 
     System.out.println("SELECT * FROM " + table + " WHERE " + where); 
     return sta.executeQuery("SELECT * FROM " + table + " WHERE " + where); 
    } catch (Exception ex) { 
     System.out.println(ex.getMessage()); 
    } 
    return null; 
} 

ResultSet rs; 
    Vector<Film> films = new Vector(); 

    rs = db.select("films"); 

    try{ 
     while(rs.next()){ 
      films.add(new Film(rs.getString("name"), rs.getString("year"), "Action", rs.getInt("id"), 5)); 
     } 
    }catch (SQLException exc){ 
     System.out.println("Error: " + exc); 
    } 

任何人可以帮助我,我怎么能填满我的JTable与我的电影到:

|Name|Year|Genre| 
================= 
|Batman|2010|Action| 
... 
... 

感谢任何回应。

+3

你需要根据你的'Vector '创建一个TableModel。我建议您查看[JTable Swing教程](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html)(请点击链接),这将帮助您开始创建基于此的AbstractTableModel。如果您遇到困难,请回复您的代码尝试,其中包括[sscce](http://sscce.org)。 – 2013-05-01 21:58:37

+1

谢谢,我看看它:) – 2013-05-01 22:02:17

+0

和addeum到@HFOE评论也许没有必要创建/使用类电影,也不需要任何接口,因为XxxTableModel是与你的类电影相同的,为什么理由用相同的数据保存两个类, – mKorbel 2013-05-01 22:03:57

回答

0

我前段时间写了一个ListTableModel类来解决这个问题。

用法:

ListTableModel ltm = new ListTableModel(); 
ltm.setModelClass(Film.class); 
ltm.setColumnNames(new String[] {"title", "year", "genre"}); 
ltm.setDisplayNames(new String[] {"Title", "Year", "Genre"}); 
ltm.setList(getFilmList()); 

JTable table = new JTable(ltm, ltm.getTableColumnModel()); 

如果您是使用HibernateJPAIBatis Spring的用户,该表可以在一个bean确定指标文件中进行配置:

<jdal:service entity="Film" /> 

<swing:defaults /> 

<swing:table entity="Film"> 
    <swing:columns> 
     <swing:column name="title" displayName="title" /> 
     <swing:column name="year" displayName="Year" /> 
     <swing:column name="gemre" displayName="Gemre" /> 
    </swing:columns> 
</swing:table> 

TablePanel table = applicationContext.getBean("filmTable", TablePanel.class); 

TablePanel添加服务器端分页和排序。