Como usar um dado tipo list

Bom amigos.
Primeiramente me descupem se eu postei no lugar errado e meu topico ficou confuso + vamos lá…

vê só eu to fazendo um sisteminha pra mim, fiz a parte + chata que é fazer toda arquitetura em camadas. ta tudo funcionado muito bem…

  • agora eu to me complicanto pra listar os dados em um JTable. No reposótrio pra listar os dados tá assim…

public List consultar(Pessoa pessoaAux) throws RepositorioException{
Connection conexao = null;
ArrayList lista = new ArrayList();
PreparedStatement pstmt = null;
ResultSet rs = null;

	try {
		
		conexao = JDBConectorMysql.getConexao();
		StringBuffer sql = new StringBuffer("SELECT codigo, nome,  fone1, fone2, fone3 FROM ");
		sql.append("catalogo");
		
		if(!pessoaAux.getNome().equals("")){
			sql.append("WHERE nome LIKE ?");
		}
		
		pstmt = conexao.prepareStatement(sql.toString());
		
		if (!pessoaAux.getNome().equals("")){
			pstmt.setString(1, pessoaAux.getNome());
		}
		
		rs = pstmt.executeQuery();
		while (rs.next()) {
			Pessoa pessoa = new Pessoa();
			pessoa.setCodigo(rs.getInt("codigo"));
			pessoa.setNome(rs.getString("nome"));
			pessoa.setNumero1(rs.getString("fone1"));
			pessoa.setNumero2(rs.getString("fone2"));
			pessoa.setNumero3(rs.getString("fone3"));
			lista.add(pessoa);
		}
		
	} catch(SQLException e) {
		e.printStackTrace();
		
	}finally {
		if(conexao != null){
			try {
				rs.close();
				pstmt.close();
				conexao.close();
				}catch (SQLException e){
					e.printStackTrace();
				}
		}
	}
	
	
	return lista;
}

Só que quando eu vou usar a lista que vai ser retornada pra o meu formulário que tá no JTable to me complicando todinho… que é a parte + facil. é pq eu estou um pouco enferrujado.

public Lista2() {

    Fachada fachada = Fachada.getInstancia();
    Pessoa pessoa = new Pessoa();
    ArrayList<Pessoa> lista = new ArrayList<Pessoa>();
     
    
    try {
    
    fachada.consultarPessoa(pessoa);
    lista.add(pessoa);

    
 DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();

        for (int i = 0; i < lista.size(); i++) {
        dtm.addRow(lista.get(i)); //************************* TA DANDO ERRO AQUI *******************

        }
    
   }catch(Exception e){
       e.printStackTrace();
   }  
}

esse dtm.addRow só é usado pra vetores?? + não serve pra uma lista ? como eu faço pra fazer esse codigo funfar, que é listar no JTable os dados do meu Banco.
Abraços…

Não use o DefaultTableModel, implemente seu proprio tableModel.

Achei um exemplo de um table model personalizado, crie o seu para usar na sua table



public abstract class TableModelPadrao extends AbstractTableModel {  
     
   protected String[] colunas;  
   protected List linhas;     
     
   public TableModelPadrao(List linhas) {  
      setColunas(criarColunas());  
      this.linhas = linhas;   
   }  
     
   protected abstract String[] criarColunas();  
     
   public int getRowCount() {  
      if (linhas != null) {  
         return linhas.size();  
      } else {  
         return 0;  
      }  
   }     
     
   public int getColumnCount() {  
      return colunas.length;  
   }     
     
   public boolean isCellEditable(int row, int col) {  
      return false;  
    }     
     
    public Class getColumnClass(int c) {  
        return getValueAt(0, c).getClass();  
    }        
     
   public String getColumnName(int col){  
      return colunas[col];  
   }  
  
   public String[] getColunas() {  
      return colunas;  
   }  
     
   public void setColunas(String[] colunas) {  
      this.colunas = colunas;  
   }  
     
   public List getLinhas() {  
      return linhas;  
   }  
  
   public void setLinhas(List linhas) {  
      this.linhas = linhas;  
      fireTableDataChanged();  
   }  
     
        
}  

Só isso resolve o problema?

Esse é so um exemplo para voce se basear nela e criar uma classe que herde AbstractTableModel para ser o model da sua table, com esse exemplo é so vc criar a sua TableModel, tenta fazer qualquer duvida posta aqui no forum que eu e os outros colegas do forum de ajudamos.

Blza. eu vou tentar. + só queria saber pq essa DefaultTable… que eu estava usando não funciona.? Pq não tem metodos que use ArrayList?

valew

Da uma olhada nesse link, ele traz a explicação que voce quer

http://www.arquivodecodigos.net/dicas/java-entenda-a-classe-defaulttablemodel-547.html

Cara utilize :

 for(Pessoa p : lista){
p.acessaSeuMetodoAqui();
}

bom somente um exemplo, de uma maneira geral você deverá percorrer a lista de dados usando uma estrutura de repetição
e assim acessando as informações contidas nesta lista de acordo com a posição ou ordem em questão.