salve galera…
implementei um AbstractTableModel, esta funcionando blzinha trazendo os registros e tals. Quero saber, melhor entender, como faco por exemplo pra pegar uma linha da JTable e excluir ou alterar o registro no banco de dados.
aqui meu AbstractTableModel e meu DAO.
public class CaixaTableModel extends AbstractTableModel{
private List<Caixa> caixa;
private String[] colunas = {"Itens", "Cód.Produto", "Produto", "Descrição", "Valor Un.", "Qtd.", "Total Compra"};
public CaixaTableModel(){
this.caixa = new ArrayList<Caixa>();
}
public CaixaTableModel(List<Caixa> lista){
this();
this.caixa.addAll(lista);
}
@Override
public int getRowCount() {
//throw new UnsupportedOperationException("Not supported yet.");
return this.caixa.size();
}
@Override
public int getColumnCount() {
// throw new UnsupportedOperationException("Not supported yet.");
return this.colunas.length;
}
public String getColumnName(int column){
//nome da coluna
if(colunas[column] == "Itens"){
return "Itens";
}else if(colunas[column] == "Cód.Produto"){
return "Cód.Produto";
}else if(colunas[column] == "Produto"){
return "Produto";
}else if(colunas[column] == "Descrição"){
return "Descrição";
}else if(colunas[column] == "Valor Un."){
return "Valor Un.";
}else if(colunas[column] == "Qtd."){
return "Qtd.";
}else if(colunas[column] == "Total Compra"){
return "Total Compra";
}
return "";
}
public Class getColumnClass(int column){
if(colunas[column] == "Itens"){
return Integer.class;
}else if(colunas[column] == "Cód.Produto"){
return Long.class;
}else if(colunas[column] == "Produto"){
return String.class;
}else if(colunas[column] == "Descrição"){
return String.class;
}else if(colunas[column] == "Valor Un."){
return BigDecimal.class;
}else if(colunas[column] == "Qtd."){
return double.class;
}else if(colunas[column] == "Total Compra"){
return BigDecimal.class;
}
return String.class;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
//throw new UnsupportedOperationException("Not supported yet.");
Caixa c = this.caixa.get(rowIndex);
switch(columnIndex){
case 0: return new FormataCodigos().retornaCodigoFormatado(new Long(c.getItensPedido()));
case 1: return new FormataCodigos().retornaCodigoFormatado(c.getProduto().getCodigo());
case 2: return c.getProduto().getProduto();
case 3: return c.getProduto().getDescricao();
case 4: return new FormataMonetarios().retornaValorFormatado(c.getValorUnitario());
case 5: return new FormataDecimais().retornaValorFormatado(c.getQuantidade());
case 6: return new FormataMonetarios().retornaValorFormatado(c.getTotalCompra());
default: return new String();
}
}
public Boolean deleteAll(){
this.caixa.clear();
fireTableDataChanged();
return true;
}
public boolean removeRow(int line){
this.caixa.remove(line);
fireTableDataChanged();
return true;
}
}
//aqui meu DAO
public void removeRegistro(Long id){
PreparedStatement stm = this.con.prepareStatement("DELETE FROM tabela WHERE id = ?");
stm.setLong(1, id);
stm.execute();
}
Como eu faco por exemplo pra remover a linha da JTable e ja remover o registro no banco de dados…A mesma coisa para UPDATE.
Com DefaultTableModel eu pegava o codigo do produto direto da tabela e mandava para meu DAO remove-lo, ja com AbstractTableModel ainda nao entendi como fazer.
obrigado.