2013-05-01 3 views
0

Я хочу заполнить мои JTable фильмами.JTable fill with экземпляры класса

У меня есть класс Film

И из БД я читал мои записи фильмов и создавать новые экземпляры фильмов, а затем я дать им вектор.

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

Вам необходимо создать TableModel на основе вашего 'Vector '. Я рекомендую вам проверить [JTable Swing tutorial] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html) (пожалуйста, нажмите ссылку), который поможет вам начать работу над созданием на основе AbstractTableModel. Вернитесь назад с попыткой вашего кода, включая [sscce] (http://sscce.org), если вы застряли. –

+1

спасибо, я смотрю на это :) –

+0

и addeum на комментарий @HFOE, возможно, нет необходимости создавать/использовать класс Film, ни какой бы то ни было интерфейс, потому что XxxTableModel такой же, как ваш класс Film, почему причина для хранения двух классов с одинаковыми данными, – mKorbel

ответ

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()); 

Если вы являетесь пользователем Spring с помощью Hibernate, JPA или IBatis, таблица может быть настроена в боб Defintion файла:

<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 добавить стороне сервера подкачки и сортировка.