Bom dia a todos!
Primeiro gostaria de agradecer o Vinigodoy pela resposta e pelos links repassados sobe o uso do TableModel, tem sido de grande ajuda no aprendizado, porem gostaria de tirar mais uma dúvida com meus amigos, seguinte, segui um dos muitos exemplos do Vinigodoy e agora já estou conseguindo exibir em minha JTable o dado cadastrado naquele momento, porem ainda não estou conseguindo carregar os dados vindos do BD, não consegui entender muito bem como fazer isso puxando as info da minha classe DAO que possui um metodo q retorna uma list contendo meus dados e reutilizando essa info na minha JTable, segue abaixo um exemplo de minha DAO, se alguem puder dar uma clareada, eu ficaria grato desde já:
public List<Classes> RetornaTabela() {
String sql = "select * from Classes";
PreparedStatement stmt;
try {
stmt = connection.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while(rs.next()){
Classes classe = new Classes();
classe.setId(rs.getInt("id"));
classe.setNome(rs.getString("nome"));
dados.add(classe);
}
} catch (SQLException ex) {
Logger.getLogger(CadastrarDadosDAO.class.getName()).log(Level.SEVERE, null, ex);
}
return dados;
}
Queria saber agora se eu poderia repassar os dados de minha list “Dados” para o construtor da minha classe “Exbir_Classe_Table” que é uma classe seguindo exatamente o mesmo conceito do repassado por Vinigodoy.
public class Exibir_Classe_Table extends AbstractTableModel{
CadastrarClasseDAO dao = new CadastrarClasseDAO();
/* Lista de Classes que representam as linhas. */
private List<Classes> linhas = dao.RetornaTabela();
/* Array de Strings com o nome das colunas. */
private String[] colunas = new String[] {
"id", "nome"};
/* Cria um ClasseTableModel vazio. */
public Exibir_Classe_Table() {
linhas = new ArrayList<Classes>();
}
/* Cria um ClasseTableModel carregado com
* a lista de classes especificadas. É o que está sendo usado no momento */
public Exibir_Classe_Table(List<Classes> listaDeClasses) {
linhas = new ArrayList<Classes>(listaDeClasses);
}
/* Retorna a quantidade de colunas. */
public int getColumnCount() {
// Está retornando o tamanho do array "colunas".
// Mas como o array ja está fixo, vai sempre retornar 2.
return colunas.length;
}
/* Retorna a quantidade de linhas. */
public int getRowCount() {
// Retorna o tamanho da lista de classes.
return linhas.size();
}
/* Retorna o nome da coluna no indice especificado.
* Este método é usado pela JTable para saber o texto do cabeçalho. */
public String getColumnName(int columnIndex) {
// Retorna o conteúdo do Array que possui o nome das colunas
// no Ãndice especificado.
return colunas[columnIndex];
};
/* Retorna a classe dos elementos da coluna especificada.
* Este método é usado pela JTable na hora de definir o editor da célula. */
public Class<?> getColumnClass(int columnIndex) {
// Retorna a classe referente a coluna especificada.
// Aqui é feito um switch para verificar qual é a coluna
// e retornar o tipo adequado. As colunas são as mesmas
// que foram especificadas no array "colunas".
switch (columnIndex) {
case 0: // Primeira coluna é o id, que é um int.
return Integer.class;
case 1: // Segunda coluna é o nome, que também é uma String..
return String.class;
default:
// Se o indice da coluna não for válido, lança um
// IndexOutOfBoundsException (Exceção de indice fora dos limites).
// Não foi necessário verificar se o indice da linha é inválido,
// pois o proprio ArrayList lança a exceção caso seja inválido.
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
Eu fiz também uma atribuição nessa classe aonde repasso o retorno de minha list “Dados” para
private List linhas = dao.RetornaTabela();
public Exibir_Classe_Table() {
linhas = new ArrayList<Classes>();
}
Gostaria de saber então se realmente seria dessa forma que eu devo trabalhar para exibir os dados em minha JTable vindos do BD.