Boa noite pessoal.
Estou trabalhando em um projeto para a feira da faculdade e estou emperrado na Jtable.(TableModel)
Vou dizer o que funciona nela. (Atualização de Itens e exlusão);
Agora o que não funciona é a adição de itens. coloquei uma imagem do que acontece. no banco de dados ele grava perfeitamente mas graficamente fica errado, só aparece o nome do produto e qdo vc fecha a janela e abre novamente ele atualiza perfeitamente.
segue abaixo os metodos e as classes.
desde já abradeço
public class TipoProduto {
private Integer idTipoProduto;
private String tipoProduto;
public TipoProduto() {
}
public TipoProduto(Integer idTipoProduto, String tipoProduto) {
this.idTipoProduto = idTipoProduto;
this.tipoProduto = tipoProduto;
}
public Integer getIdTipoproduto() {
return idTipoProduto;
}
public void setIdTipoproduto(Integer idTipoproduto) {
this.idTipoProduto = idTipoproduto;
}
public String getTipoProduto() {
return tipoProduto;
}
public void setTipoProduto(String tipoProduto) {
tipoProduto = tipoProduto.toUpperCase();
this.tipoProduto = tipoProduto;
}
@Override
public String toString() {
return this.tipoProduto;
}
}
public void setAdiciona() {
tipoProduto.setTipoProduto(tfTipo.getText());
new TipoProdutoDAO().setAdiciona(tipoProduto);
tableModel.setAdd(tipoProduto);
limparCampos();
}
public class TipoProdutoTableModel extends AbstractTableModel {
private static final int COL_CODIGO = 0;
private static final int COL_TIPOPRODUTO = 1;
private List<TipoProduto> listaProdutos;
//Esse é um construtor, que recebe a nossa lista de Objetos
public TipoProdutoTableModel(List<TipoProduto> listaProdutos) {
this.listaProdutos = new ArrayList<TipoProduto>(listaProdutos);
}
@Override
public int getRowCount() {
//Quantas linhas tem sua tabela? Uma para cada item da lista.
return listaProdutos.size();
}
@Override
public int getColumnCount() {
//Quantas colunas tem a tabela? Nesse exemplo, só 5.
return 2;
}
@Override
public String getColumnName(int column) {
//Qual é o nome das nossas colunas?
if (column == COL_CODIGO) {
return "CÓDIGO";
}
if (column == COL_TIPOPRODUTO) {
return "TIPO DE PRODUTO";
}
return ""; //Nunca deve ocorrer
}
@Override
public Object getValueAt(int row, int column) {
//Precisamos retornar o valor da coluna column e da linha row.
TipoProduto tipoProduto = listaProdutos.get(row);
if (column == COL_CODIGO) {
return tipoProduto.getIdTipoproduto();
} else if (column == COL_TIPOPRODUTO) {
return tipoProduto.getTipoProduto();
}
return ""; //Nunca deve ocorrer
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
TipoProduto tipoProduto = listaProdutos.get(rowIndex);
if (columnIndex == COL_CODIGO) {
tipoProduto.setIdTipoproduto(rowIndex);
} else if (columnIndex == COL_TIPOPRODUTO) {
tipoProduto.setTipoProduto(aValue.toString());
}
}
@Override
public Class<?> getColumnClass(int columnIndex) {
//Qual a classe das nossas colunas? Como estamos exibindo texto, é string.
return Integer.class;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
//Indicamos se a célula da rowIndex e da columnIndex é editável. Nossa tabela toda é.
// if (columnIndex == COL_CODIGO) {
// return false;
// } else {
// return true;
// }
return false; // Aqui todas as celulas nao serão editaveis
}
public TipoProduto get(int row) {
return listaProdutos.get(row);
}
public void setRemove(int row) {
//Remove da lista
listaProdutos.remove(row);
//Avisa a tabela que foi removido
// fireTableRowsDeleted(row, row);
fireTableDataChanged();
}
public void setAdd(TipoProduto tipoProduto) {
//Adiciona na lista
this.listaProdutos.add(tipoProduto);
//Avisa a tabela que um novo produto foi inserido.
fireTableRowsInserted(this.listaProdutos.size() - 1, this.listaProdutos.size() - 1);
}
}
