Olá a todos, estou bem confuso com a implementação das minhas jtables no meu sistema, criei uma tablemodel para preencher a jtable com dados do banco de dados, porém eu estou com uma dúvida que não estou conseguindo sanar lendo os artigos na internet e gostaria que alguém pudesse me auxiliar ou me mostrar o caminho que devo seguir já que estou bem confuso com relação a personalizar minha tablemodel. Preciso que alem de preencher a tabela com banco de dados ela deixa apenas uma das colunas editaveis, ja consegui deixar todas editaveis e nenhuma editável mas apenas uma ainda não consegui. minha TableModel é simples e esta assim:
package br.com.logos.Model;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class ProdSearch extends AbstractTableModel{
private ArrayList rows = null;
private String[] Cols = null;
private List<Boolean[]> editableCells;
public ProdSearch(ArrayList linhas, String[] Colunas){
setRows(linhas);
setCols(Colunas);
}
@Override
public int getRowCount() {
return rows.size();
}
@Override
public int getColumnCount() {
return Cols.length;
}
@Override
public Object getValueAt(int rowNum, int colNum) {
Object[] linha = (Object[]) getRows().get(rowNum);
return linha[colNum];
}
@Override
public String getColumnName(int arg0){
return Cols[arg0];
}
public ArrayList getRows() {
return rows;
}
public void setRows(ArrayList rows) {
this.rows = rows;
}
public String[] getCols() {
return Cols;
}
public void setCols(String[] Cols) {
this.Cols = Cols;
}
}
E quando chamo a Jtable apenas seto o tamanho das colunas e insiro dados assim:
public void PreencherTabelaVenda(){
int LinhaSelecionada = TableVenda.getSelectedRow();
ArrayList dados = new ArrayList();
String[] Colunas = new String[]{“Cód.”, “Descrição”, “Quantidade”, “Valor unitário”, “Valor Total”};
String sql2 = “SELECT * FROM tab_prod_venda WHERE pedido =”+LblPed.getText();
try {
PreparedStatement pstm = con.prepareStatement(sql2);
ResultSet Rs = pstm.executeQuery();
if(Rs.first()){
do {
dados.add(new Object[]{Rs.getInt(“cod”), Rs.getString(“descricao”), Rs.getInt(“quantidade”), Rs.getDouble(“valorunit”), Rs.getDouble(“valortotal”)});
} while (Rs.next());
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao preencher tabela com produtos da venda: "+e);
}
ProdSearch model = new ProdSearch(dados, Colunas);
TableVenda.setModel(model);
TableVenda.getColumnModel().getColumn(0).setPreferredWidth(10);
TableVenda.getColumnModel().getColumn(1).setPreferredWidth(300);
TableVenda.getColumnModel().getColumn(2).setPreferredWidth(35);
TableVenda.getColumnModel().getColumn(3).setPreferredWidth(35);
TableVenda.getColumnModel().getColumn(4).setPreferredWidth(35);
model.fireTableDataChanged();
}
Gostaria de deixar a coluna com o campo quantidade editável para que eu possa alterar a quantidade e que após a alteração eu tenha um método que calcule o valor X a nova quantidade e já faça o update no banco.
Grato desde já!