Subtração na Jtable

Bom dia! Estou com um problema para subtrair o valor de uma linha selecionada e atualizar o campo valor total. Segue o código:

public void subtracao(){
            if (jTable1.getSelectedRow() >= 0) { 
    try {
        double subt = 0;
        for (int i = 0; i < jTable1.getSelectedRow(); i++) {
            Double valorAux = (Double) jTable1.getValueAt(i, 3);
            subt -= valorAux.doubleValue();
        }
        campovalort.setText(String.valueOf(subt));
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Erro ao calcular Total Produtos: " + e.getMessage());
    }
            }
}

Novo código, só que agora o valortotal está indo para Zero.

public void subtracao(){

    try {
        double subt = 0;
        for (int i = 0; i < jTable1.getSelectedRow(); i++) {
            Double valorAux = (Double) jTable1.getValueAt(jTable1.getSelectedRow(), 3);
            subt -= valorAux.doubleValue();
        }
        campovalort.setText(String.valueOf(subt));
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Erro ao calcular Total Produtos: " + e.getMessage());
    }
            
}

Sempre que postar código no fórum, use o botão </> para formatar seu código, senão é horrível para ler.

Você quer subtrair o que do que?

@staroski
Quero subtrair o valor da linha selecionada que irei remover, do valor total.

E cadê esse valor total no código que você postou?

double valorTotal = /* sei lá como você obtém o valor total */;
double valorSelecionado = (Double) jTable1.getValueAt(jTable1.getSelectedRow(), 3);
double subtracao = valorTotal - valorSelecionado;

Cheguei ao seguinte código, porém retornando 0 ao campovalort:

public void subtracao() {
    try {
double subtracao = 0;
        for (int i = 0; i < jTable1.getSelectedRow(); i++) {
 double valorTotal = Double.parseDouble(campovalort.getText());double 
valorSelecionado = (Double) jTable1.getValueAt(jTable1.getSelectedRow(), 3);
subtracao = valorTotal - valorSelecionado;
        }
  campovalort.setText(String.valueOf(subtracao));
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Erro ao calcular Total Produtos: " + e.getMessage());
    }
}

Não vou mais ajudar enquanto você não aprender a formatar o código no fórum. :wink:

tudo bem, vc tem seu direito, assim como eu tenho o meu de nao saber.

Alguém disposto a ajudar?

Quando postar código, selecione o mesmo e clique no botão de Texto pré formatado, identificado pelo símbolo </>, isso facilita muito a leitura. :wink:

Qual a necessidade do laço abaixo?

public void subtracao() {
    try {
        double subtracao = 0;
        for (int i = 0; i < jTable1.getSelectedRow(); i++) {
            double valorTotal = Double.parseDouble(campovalort.getText());
            double valorSelecionado = (Double) jTable1.getValueAt(jTable1.getSelectedRow(), 3);
            subtracao = valorTotal - valorSelecionado;
        }
        campovalort.setText(String.valueOf(subtracao));
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Erro ao calcular Total Produtos: " + e.getMessage());
    }
}

Você não quer somente subtrair o valor da linha selecionada?

public void subtracao() {
        double valorTotal = Double.parseDouble(campovalort.getText());
        int linhaSelecionada = jTable1.getSelectedRow();
        int coluna = 3;
        double valorSelecionado = (Double) jTable1.getValueAt(linhaSelecionada, coluna);
        subtracao = valorTotal - valorSelecionado;
        campovalort.setText(String.valueOf(subtracao));
}

Funcionou, muito obrigado pelo esclarecimento.

1 curtida