Estou iniciando com AbstractTableModel, criei um form de exemplo onde já implementei boa parte do código, minha dúvida está na hora de pegar a lista que recebo do banco na classe DAO e passar para o meu método Add do meu modelo da tabela para ser mostrado no JTable.
Abaixo as classes:
Classe modelo da JTable:
package modelo;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class ProdutosTableModel extends AbstractTableModel{
private final List<ProdutosBin> linhas = new ArrayList<>();
private final String[] colunas = {"Codigo", "Descricao"};
@Override
public String getColumnName(int column){
return colunas[column];
}
@Override
public int getRowCount() {
return linhas.size();
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public Object getValueAt(int l, int c) {
switch(c){
case 0: return linhas.get(l).getCodigo();
case 1: return linhas.get(l).getDescricao();
}
return null;
}
public void addLinha(ProdutosBin p){
linhas.add(p);
fireTableRowsInserted(linhas.size() -1, linhas.size() -1);
}
}
Classe DAO:
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import modelo.ProdutosBin;
public class ProdutosDao {
public List<ProdutosBin> consultaProduto (ProdutosBin pb){
Connection con = Conexao.getConnection();
PreparedStatement stmt = null;
ResultSet rs = null;
List<ProdutosBin> lista = new ArrayList<>();
try {
stmt = con.prepareStatement("SELECT CODITPROD, DESCRICAO FROM CAD_ITPROD WHERE CODITPROD = ?");
stmt.setInt(1,pb.getCodigo());
rs = stmt.executeQuery();
while (rs.next()){
ProdutosBin p = new ProdutosBin ();
p.setCodigo(rs.getInt("CODITPROD"));
p.setDescricao(rs.getString("DESCRICAO"));
lista.add(p);
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, " Ororreu um Erro: " + ex);
}finally{
Conexao.closeConnection(con, stmt, rs);
}
return lista;
}
}
Construtor do form:
ProdutosTableModel modelo;
public FormProdutos() {
initComponents();
modelo = new ProdutosTableModel();
jtProduto.setModel(modelo);
}
Evento do botão que pega o código do produto e chama a classe DAO passando o código como parâmetro:
private void btnConsultaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
ProdutosBin pb = new ProdutosBin();
pb.setCodigo(Integer.parseInt(txtCodigo.getText()));
ProdutosDao dao = new ProdutosDao();
dao.consultaProduto(pb);
}
O select é executado e a lista é carregada, mas como faço para colocar a lista no método Add do modelo?