Boa noite galera, eu usava DefaultTableModel, mas me disseram que é errado então fui atras do método correto que é criando a tabela por ArrayList. Só que eu tô tendo um problema que não acho solução quando vou executar a aplicação ele não retorna do valores do banco de dados.
public class controlTable extends AbstractTableModel {
private ArrayList linhas = null;
private String[] colunas = null;
public controlTable(ArrayList lin, String[] col) {
setLinhas(lin);
setColunas(col);
}
/**
* @return the linhas
*/
public ArrayList getLinhas() {
return linhas;
}
/**
* @param linhas the linhas to set
*/
public void setLinhas(ArrayList linhas) {
this.linhas = linhas;
}
/**
* @return the colunas
*/
public String[] getColunas() {
return colunas;
}
/**
* @param colunas the colunas to set
*/
public void setColunas(String[] colunas) {
this.colunas = colunas;
}
public int getColumnCount(){
return colunas.length;
}
public int getRowCount(){
return linhas.size();
}
public String getColumnName(int numCol){
return colunas[numCol];
}
public Object getValueAt(int numLin, int numCol){
Object[] linhas = (Object[])getLinhas().get(numLin);
return linhas[numCol];
}
}
public void readTableCompra(String Sql) {
ArrayList dados = new ArrayList();
String[] colunas = new String[]{“ID”, “Nome”, “Preço”, “Quantidade Atual”, “Quantidade Venda”, “Data”, “Parcial”};
conexao.conecta();
conexao.executaSQL(Sql);
try {
conexao.rs.first();
do {
dados.add(new Object[]{
conexao.rs.getString("idVenda"),
conexao.rs.getString("nome"),
conexao.rs.getString("venda"),
conexao.rs.getString("quantAtual"),
conexao.rs.getString("quantVenda"),
conexao.rs.getString("diaVenda"),
conexao.rs.getString("total")});
} while (conexao.rs.next());
} catch (SQLException ex) {
JOptionPane.showMessageDialog(rootPane, "Erro ao gerar a tabela compra! \n" + ex.getMessage());
}
controlTable tabela = new controlTable(dados, colunas);
tabelaCompra.setModel(tabela);
tabelaCompra.getColumnModel().getColumn(0).setPreferredWidth(120);
tabelaCompra.getColumnModel().getColumn(0).setResizable(false);
tabelaCompra.getColumnModel().getColumn(1).setPreferredWidth(302);
tabelaCompra.getColumnModel().getColumn(1).setResizable(false);
tabelaCompra.getColumnModel().getColumn(2).setPreferredWidth(120);
tabelaCompra.getColumnModel().getColumn(2).setResizable(false);
tabelaCompra.getColumnModel().getColumn(3).setPreferredWidth(120);
tabelaCompra.getColumnModel().getColumn(3).setResizable(false);
tabelaCompra.getColumnModel().getColumn(4).setPreferredWidth(120);
tabelaCompra.getColumnModel().getColumn(4).setResizable(false);
tabelaCompra.getColumnModel().getColumn(5).setPreferredWidth(120);
tabelaCompra.getColumnModel().getColumn(5).setResizable(false);
tabelaCompra.getColumnModel().getColumn(6).setPreferredWidth(120);
tabelaCompra.getColumnModel().getColumn(6).setResizable(false);
tabelaCompra.getTableHeader().setReorderingAllowed(false);
tabelaCompra.setAutoResizeMode(tabelaCompra.AUTO_RESIZE_OFF);
//tabelaCompra.setSelectionModel(ListSelectionModel.SINGLE_SELECTION);
conexao.desconecta();
}
Essa é o método de ler e criar a tabela. Chamei o método no initComponents assim:
readTableCompra(“select * from historico order by nome”);
Alguém sabe me dizer onde está errado?