2013-05-16 73 views
0

如何使用來自2個不同列表的內容填充JTable? 我有2個列表與我從數據庫中的2個不同表獲得的對象。 然後,我想將它們全部放入JTable中的單個行中。所以我做了2個循環,其中一個添加了list1的內容,另一個for循環添加了第二個列表的內容。將分隔列表的內容添加到JTable中

的問題是,如果有數據在數據庫中的多行,第二個列表只是不斷重複着同樣的信息

這裏是我的代碼

private void executeHQLQuery() { 
    try { 
     Session session = HibernateUtil.getSessionFactory() 
      .openSession(); 
     session.beginTransaction(); 
     Query q = session.createQuery("from Modelo as m"); 
     Query q1 = session.createQuery("from Cidade as e"); 
     List <Modelo> resultList = q.list(); 
     Integer codModelo = new Integer(resultList.get(0).getCodModelo()); 
     List <Cidade> resultList2 = q1.list(); 

     displayResult(codModelo, resultList2, resultList); 
     session.getTransaction().commit(); 
    } catch (HibernateException he) { 
     he.printStackTrace(); 
    } 
} 
private void displayResult(Integer x, List resultList2, List resultList) { 
    Vector <String> nomeTabela = new Vector <String>(); 
    Vector tableData = new Vector(); 
    nomeTabela.add("codModelo"); 
    nomeTabela.add("codCidade"); 
    nomeTabela.add("nomeCidade"); 
    nomeTabela.add("estadoCidade"); 
    nomeTabela.add("paisCidade"); 
    nomeTabela.add("nomeModelo"); 
    nomeTabela.add("anoModelo"); 
    nomeTabela.add("marcaModelo"); 
    for (Object o: resultList2) { //Works fine 
     Cidade c = (Cidade) o; 
     Vector <Object> oneRow = new Vector <Object>(); 
     oneRow.add(x); 
     oneRow.add(c.getCodCidade()); 
     oneRow.add(c.getNomeCidade()); 
     oneRow.add(c.getEstadoCidade()); 
     oneRow.add(c.getPaisCidade()); 
     for (Object o1: resultList) { 
      Modelo m = (Modelo) o1; 
      oneRow.add(m.getNomeModelo()); 
      oneRow.add(m.getAnoModelo()); 
      oneRow.add(m.getMarca()); 

     } 

     tableData.add(oneRow); 
    } 
    resultTable.setModel(new DefaultTableModel(tableData, nomeTabela)); 
} 

resultList2工作正常,resultList自顧自地顯示來自數據庫中最後一個Modelo表的信息

回答

0

看起來您正在做2個查詢,但期待其中一個查詢發生變化。

如果您希望resultList根據resultList2進行更改,那麼您需要將此查詢放入resultList2的循環中。

Query q1 = session.createQuery("from Cidade as e");