Select no Jtable

Galera boa tarde
Alguem pode dar uma dica?
Estoum com um jtable que recebe os produtos de uma venda, só que está gravando como se fosse uma pilha.
ex: na tabela produtos tenho: calça,tenis,meia e cinto, ai compro 1 calça e um cinto, ao inserir na greed blz, mas ao gravar no banco grava 1 calça e 1 tenis, ele pega o primeiro e o segundo item da tabela e ñ os itens que selecionei.
aqui o código

[code]private void cadastrarVenda(){
if (venda.size() == 0){
JOptionPane.showMessageDialog(this, “Inclua pelo menos um produto!”);
} else {
try {

            VendasControl vc = new VendasControl();
            SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
            java.util.Date d = new java.util.Date();
            Date data = Date.valueOf(formato.format(d));
            int codigo = vc.buscarCodigoUltimaVenda() + 1;//pega o codigo da utima venda e soma 1
            for (int i = 0; i < venda.size();  i++){
                
                venda.get(i).setNomeProduto(produtos.get(i).getNome());//pega o nome do produto de indice i
                venda.get(i).setNomeCliente(clientes.get(cbClientes.getSelectedIndex()).getnome());//pega o nome do cliente de linha selecionada
                venda.get(i).setDataVenda(data);
                venda.get(i).setCodigo(codigo);
                venda.get(i).setCodigoProduto(produtos.get(i).getCodigo());//pega o codigo do produto de indice i
                venda.get(i).setCodigoCliente(clientes.get(cbClientes.getSelectedIndex()).getcodigo());
                vc.cadastrarVenda(venda.get(i));
            }
            JOptionPane.showMessageDialog(this, "Venda cadastrada com sucesso!");
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, "Erro ao cadastrar Venda!");
        }
    }
}[/code]

Opa, neybox, beleza?

Duas coisas:

  1. Coloque nomes significativos nas suas variáveis para serem fáceis de outros desenvolvedores indentificarem-as. As variáveis venda e produtos são de que tipo?
  2. Você criou um TableModel para a sua JTable? Você criou um campo boolean para representar as check boxes, já que você seleciona os itens que quer comprar?

Abraços!

O Meu conterranio, obrigado pela atenção, mas consegui solucionar, o problema estáva no meu metodo de incluir produtos, bom, dava para arrumar de outra maneira, mas arrumei dessa forma, segue o código

[code] private void incluirProduto(){
if (verificarQuantidade()){

        String quantidade = String.valueOf(ftfQuantidade.getValue());
        
        ProdutoBean produtoAlteraEstoque = new ProdutoBean();
        ProdutoControl pc = new ProdutoControl();      
        produtoAlteraEstoque = pc.consultar(produtos.get(cbProdutos.getSelectedIndex()).getCodigo()); 
        if(Integer.parseInt(quantidade) > produtoAlteraEstoque.getEstoque()){
            JOptionPane.showMessageDialog(this, "Quantidade maior que o estoque, tente quantidade menor.");    
        }else{
            VendasBean vb = new VendasBean();
            vb.setNomeProduto(produtos.get(cbProdutos.getSelectedIndex()).getNome());
            vb.setCodigoProduto(produtos.get(cbProdutos.getSelectedIndex()).getCodigo());
            
            vb.setQuantidade(Integer.parseInt(String.valueOf(ftfQuantidade.getValue())));
            venda.add(vb);
            String produto = produtos.get(cbProdutos.getSelectedIndex()).getNome();
            
            String valor = String.valueOf(produtos.get(cbProdutos.getSelectedIndex()).getValor() * Integer.parseInt(quantidade));//ñ da para colocar aqui   
            String [] campos = new String [] { produto, quantidade, valor };
            tmVendas.addRow(campos);
            total += Double.parseDouble(valor);
            ftfTotal.setValue(total);
            
            //tem que carregar em um objeto produto, a quantidade do estoque anterior, para poder subtrair
            produtoAlteraEstoque.setEstoque(produtoAlteraEstoque.getEstoque() - Integer.parseInt(quantidade));//estoque atual = estoque anterior - quantidade
            pc.alterarEstoqueProduto(produtoAlteraEstoque);
            
        }
    } else {
        JOptionPane.showMessageDialog(this, "Quantidade invalida!");
        ftfQuantidade.requestFocus();
    }
}[/code]

Opa, neybox. É do Sul de Minas, também?

Que bom que resolveu o problema. Porém, deixe-me dar alguns pitacos sobre o teu código:

  1. Você tá tratando as exceções que podem vir do banco de dados caso haja um erro? Como você tá trabalhando com comandos INSERT, UPDATE e DELETE, pode ocorrer erros em determinados momentos, e não vi nenhum bloco try/catch para tratar disso. Pode ser legal pensar no tratamento de erros;

  2. Comece a pensar em criar o seu próprio TableModel. Pelo que vejo, você tá trabalhando com o DefaultTableModel. Tenha em mente que ele foi um modelo primário e não evoluiu com o tempo. Recomendo fortemente a criar seu próprio modelo, trabalhando diretamente com objetos ao invés de linhas/colunas.

Grande abraço,
fique com Deus! :smiley:

Então meu querido, sou mais para o norte de MG, proximo ao Espirito Santo(Vitoria)
Mas já passei pela sua cidade, para pegar a fernão Dias.
Então eu estou tratando com try catch sim. Esse trabalho tenho que apresentar daqui 15 dias, está meio tenso, pois tenho que implementar a venda a prazo,relatório de vendas e alimentar estoque, e no mais tratar alguns metodos, tipo ñ deixar inserir o mesmo produto 2 vezes na greed.
E quanto a criar meu proprio Jtable, ainda ñ sei fazer, mas vou pesquisar.
Boa noite, que Deus te abençoe

[quote=neybox]Então meu querido, sou mais para o norte de MG, proximo ao Espirito Santo(Vitoria)
Mas já passei pela sua cidade, para pegar a fernão Dias.
Então eu estou tratando com try catch sim. Esse trabalho tenho que apresentar daqui 15 dias, está meio tenso, pois tenho que implementar a venda a prazo,relatório de vendas e alimentar estoque, e no mais tratar alguns metodos, tipo ñ deixar inserir o mesmo produto 2 vezes na greed.
E quanto a criar meu proprio Jtable, ainda ñ sei fazer, mas vou pesquisar.
Boa noite, que Deus te abençoe[/quote]

Existe um projeto que chama ObjectTableModel. Bem simples de utilizar e já é pronto, bastando apenas você inserir o .jar em seu projeto e utiliza-lo.

Abraços