Gostaria de saber como eu insiro dados em uma jtable.
Eu uso uma table model para controlar jtable
DAO responsavel pela conexão com o banco
como eu consigo fazer os dois metodos se comunicarem de forma que os dados do banco são mostrados da jtable
Bom abaixo segui o que eu fiz mas nao deu certo
List<Produto> lista = daoProduto.buscarTodos();
ProdutoTableModel model = new ProdutoTableModel(lista);//aqui fica grifado a lista ou seja está dando erro.
tblBanco.setModel(model);
Meu codigo da Table Model: Produto
public class Produto {
private String despesa;
private String estabelecimento;
private String datadespesa;
private String valordespesa;
private String formapagamento;
private String datacheque;
private String numerocheque;
public Produto() {
}
public Produto(String despesa,String estabelecimento,String datadespesa,String valordespesa,String formapagamento,String datacheque,String numerocheque) {
this.despesa = despesa;
this.estabelecimento = estabelecimento;
this.datadespesa = datadespesa;
this.valordespesa = valordespesa;
this.formapagamento = formapagamento;
this.datacheque = datacheque;
this.numerocheque = numerocheque;
}
//Gets
public String getDespesa() {
return despesa;
}
public String getEstabelecimento() {
return estabelecimento;
}
public String getDataDespesa() {
return datadespesa;
}
public String getValorDespesa() {
return valordespesa;
}
public String getFormaPagamento() {
return formapagamento;
}
public String getDataCheque() {
return datacheque;
}
public String getNumeroCheque() {
return numerocheque;
}
//Sets
public void setDespesa(String despesa) {
this.despesa = despesa;
}
public void setEstabelecimento(String estabelecimento) {
this.estabelecimento = estabelecimento;
}
public void setDataDespesa(String datadespesa) {
this.datadespesa = datadespesa;
}
public void setValorDespesa(String valordespesa) {
this.valordespesa = valordespesa;
}
public void setFormaPagamento(String formapagamento) {
this.formapagamento = formapagamento;
}
public void setDataCheque(String datacheque) {
this.datacheque = datacheque;
}
public void setNumeroCheque(String numerocheque) {
this.numerocheque = numerocheque;
}
}
Codigo Table Model:ProdutoTableModel
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class ProdutoTableModel extends AbstractTableModel {
//constantes que vão representar as colunas
//(só para facilitar o entendimento do código)
private final int COL_Despesa = 0;
private final int COL_Estabelecimento = 1;
private final int COL_DataDespesa = 2;
private final int COL_ValorDespesa = 3;
private final int COL_FormaPagamento = 4;
private final int COL_DataCheque = 5;
private final int COL_NumeroCheque = 6;
//lista dos produtos que serão exibidos
private List<Produto> produtos;
public ProdutoTableModel() {
produtos = new ArrayList();
}
public ProdutoTableModel(List<Produto> lista) {
this();
produtos.addAll(lista);
}
public int getRowCount() {
//cada produto na lista será uma linha
return produtos.size();
}
public int getColumnCount() {
//vamos exibir só Nome e Quantidade, então são 2 colunas
return 2;
}
@Override
public String getColumnName(int column) {
//qual o nome da coluna
if (column == COL_Despesa) {
return "Despesa";
} else if (column == COL_Estabelecimento) {
return "Estabelecimento";
}
else if (column == COL_DataDespesa) {
return "Data da Despesa";
}
else if (column == COL_ValorDespesa) {
return "Valor da Despesa";
}
else if (column == COL_FormaPagamento) {
return "Forma de Pagamento";
}
else if (column == COL_DataCheque) {
return "Data do Cheque";
}
else if (column == COL_NumeroCheque) {
return "Numero do Cheque";
}
return "";
}
@Override
public Class getColumnClass(int columnIndex) {
//retorna a classe que representa a coluna
if (columnIndex == COL_Despesa) {
return String.class;
} else if (columnIndex == COL_Estabelecimento) {
return String.class;
}
else if (columnIndex == COL_DataDespesa) {
return String.class;
}
else if (columnIndex == COL_ValorDespesa) {
return String.class;
}
else if (columnIndex == COL_FormaPagamento) {
return String.class;
}
else if (columnIndex == COL_DataCheque) {
return String.class;
}
else if (columnIndex == COL_NumeroCheque) {
return String.class;
}
return String.class;
}
public Object getValueAt(int rowIndex, int columnIndex) {
//pega o produto da linha
Produto p = produtos.get(rowIndex);
//verifica qual valor deve ser retornado
if (columnIndex == COL_Despesa) {
return p.getDespesa();
} else if (columnIndex == COL_Estabelecimento) {
return p.getEstabelecimento();
}
else if (columnIndex == COL_DataDespesa) {
return p.getDataDespesa();
}
else if (columnIndex == COL_ValorDespesa) {
return p.getValorDespesa();
}
else if (columnIndex == COL_FormaPagamento) {
return p.getFormaPagamento();
}
else if (columnIndex == COL_DataCheque) {
return p.getDataCheque();
}
else if (columnIndex == COL_NumeroCheque) {
return p.getNumeroCheque();
}
return "";
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
//no nosso caso todas vão ser editáveis, entao retorna true pra todas
return true;
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
//pega o produto da linha
Produto p = produtos.get(rowIndex);
//verifica qual valor vai ser alterado
if (columnIndex == COL_Despesa) {
p.setDespesa(aValue.toString());
} else if (columnIndex == COL_Estabelecimento) {
p.setEstabelecimento(aValue.toString());
}
else if (columnIndex == COL_DataDespesa) {
p.setDataDespesa(aValue.toString());
}
else if (columnIndex == COL_ValorDespesa) {
p.setValorDespesa(aValue.toString());
}
else if (columnIndex == COL_FormaPagamento) {
p.setFormaPagamento(aValue.toString());
}
else if (columnIndex == COL_DataCheque) {
p.setDataCheque(aValue.toString());
}
else if (columnIndex == COL_NumeroCheque) {
p.setNumeroCheque(aValue.toString());
}
//avisa que os dados mudaram
fireTableDataChanged();
}
//-----------------------------------------------------
//Métodos personalizados
//-----------------------------------------------------
public void inserir(Produto p) {
produtos.add(p);
fireTableDataChanged();
}
public void excluir(String pos) {
produtos.remove(pos);
fireTableDataChanged();
}
public void excluir(Produto p) {
produtos.remove(p);
fireTableDataChanged();
}
public void ordenarPorValor() {
//ordena pelo nome
Collections.sort(produtos, new Comparator<Produto>() {
public int compare(Produto o1, Produto o2) {
return o1.getValorDespesa().compareTo(o2.getValorDespesa());
}
});
//avisa que a tabela foi alterada
fireTableDataChanged();
}
public void misturar() {
//mistura a lista
Collections.shuffle(produtos);
//avisa que a tabela foi alterada
fireTableDataChanged();
}
public Produto getCliente(int pos) {
if (pos >= produtos.size()) {
return null;
}
return produtos.get(pos);
}
}
Gostaria de saber aonde esta este erro, e se estou no caminho certo com Table Model, e como faço para inserir meu banco de dados no jtable atraves do tablemodel.