Dúvida ao inserir dados em uma tabela netbeans

Boa tarde,
Estou tentando adicionar itens em uma tabela ao clicar em um botão adicionar e depois atualizá-la com o estoque atualizado para cada produto ,só que ao inserir as linhas a comparação entre os campos não é feita e são adicionados produtos além do estoque no banco.

a comparação é feita apenas uma vez e se mantém apartir dessa inserção com o dado atual , repetindo o valor de estoque restante e permitindo a inserção além do estoque.
Eis o código:

private void btnAdicProdutoActionPerformed(java.awt.event.ActionEvent evt) {

    modelProdutos = controllerProdutos.retornarProdutoController(Integer.parseInt(txtCodProd.getText()));

    int codigoProduto = modelProdutos.getIdProduto();
    double quantidade = 0;
    double somaQuantidadeDigitada = 0;
    quantidade = Double.parseDouble(txtQuantProd.getText());// passando de int para double para poder calcular o valor total abaixo.
    somaQuantidadeDigitada = somaQuantidadeDigitada + quantidade;
    //Double quantidadeAtual = quantidade;

// int primeiroIdInserido = (int) tblCadVendas.getValueAt(0, 0);

    int estoque = modelProdutos.getProEstoque();

    DefaultTableModel modelo = (DefaultTableModel) tblCadVendas.getModel();

    if (txtQuantProd.getText().equals("") || txtQuantProd.getText().equals("0")) {

        JOptionPane.showMessageDialog(null, "Prencha uma quantidade válida para o produto desejado!");
        txtQuantProd.setText("1");

//
} else if (quantidade < estoque && estoque > 0) {
//
int cont = 0;

        for (int i = 0; i < cont; i++) {
            modelo.setNumRows(0);

        }

// tblCadVendas.revalidate();
//adicionando uma linha na tabela a cada iteração do for

        modelo.addRow(new Object[]{
            //adicionando o conteudo das colunas a cada iteração do for
            modelProdutos.getIdProduto(),
            modelProdutos.getProNome(),
            txtQuantProd.getText(),
            modelProdutos.getProvalor(),
            quantidade * modelProdutos.getProvalor(), //calculo do valor total resultado da quantidade de itens multiplicado pelo valor do produto (por linha ou subtotais)
            modelProdutos.getProEstoque(),
            modelProdutos.getProEstoque() - Integer.parseInt(txtQuantProd.getText())

        });

       int novoEstoque = modelProdutos.getProEstoque() - Integer.parseInt(txtQuantProd.getText());
         estoque = novoEstoque;
        somaValorTotalProdutos();

//
} else if (quantidade == estoque && estoque > 0) {

//
// //adicionando uma linha na tabela a cada iteração do for
//
modelo.addRow(new Object[]{
//adicionando o conteudo das colunas a cada iteração do for
modelProdutos.getIdProduto(),
modelProdutos.getProNome(),
txtQuantProd.getText(),
modelProdutos.getProvalor(),
quantidade * modelProdutos.getProvalor(), //calculo do valor total resultado da quantidade de itens multiplicado pelo valor do produto (por linha ou subtotais)
modelProdutos.getProEstoque(),
modelProdutos.getProEstoque() - Integer.parseInt(txtQuantProd.getText())

        });

// int cont = 0;
//
// for (int i = 0; i < cont; i++) {
// tblCadVendas.setValueAt(estoque - quantidade, i, 6);
// estoque = (int) tblCadVendas.getValueAt(i, 6);
// }
//
// // a linha abaixo seleciona a primeira linha da tabela
// //tblCadVendas.addRowSelectionInterval(0, 0);
//// dispose();
//// new ViewPedido12().setVisible(true);
} else {

// novoultimoId = modelProdutos.getIdProduto();
// proximoIdInserido = proximoIdInserido;
JOptionPane.showMessageDialog(this, “Produto ou quantidade indisponivel!”);

        quantidade = 0;
        somaQuantidadeDigitada = 0;
        somaValorTotalProdutos();
        
    }
        int novoEstoque = modelProdutos.getProEstoque() - Integer.parseInt(txtQuantProd.getText());
         estoque = novoEstoque;
        somaValorTotalProdutos();

// System.out.println(“primeiroIdInserido”+primeiroIdInserido);
// System.out.println("proximoIdInserido "+proximoIdInserido);
System.out.println(“Quantidade” + quantidade);
System.out.println(“somaquantidade” + somaQuantidadeDigitada);

}

Não faz essa gambiarra de usar DefaultTableModel.
Implementa o seu próprio TableModel para renderizar a lista de produtos de seu estoque.
Aí você não precisa se preocupar em ficar adicionando manualmente itens nas linhas e colunas da JTable.

1 curtida

Desculpe, Boa tarde , estou tentando essa solução há uma semana