Somar Coluna JTable[RESOLVIDO]

Olá Pessoal,

Eu possuí uma tabela que adiciona |código produto|descrição|Preço|quantidade|ValorTotal| de acordo com os produto que o cliente deseja comprar, porém estou querendo que ele some a coluna valorTotal, setar valor dessa soma JTxtValorTotalDosProdutos. Só que estou com dificuldade em fazer isso.
Desde já agradeço pela atenção de todos.

tu pode fazer um for que percorre a tabela somando a coluna desejada…

double count=0; for (int i=0; i<=table.getRowCount()-1;i++) { count+=Double.parseDouble(table.getValueAt(i, 4).toString()); }

2 curtidas

Ué, é só fazer seu tablemodel retornar a soma.

Posta aí seu TableModel.

[quote=ViniGodoy]Ué, é só fazer seu tablemodel retornar a soma.

Posta aí seu TableModel.[/quote]
é… ou isso…

Vini eu até consegui implementar, porém onde colocar para executar que não sei.

Segue o código:

[code]private void calculaTotalProdutos()
{
Double soma =0.0;
for (int i = 0 ; i < jtProdutos.getColumnCount() ; i++)
{
if (jtProdutos.getValueAt(i, 0).equals(true))
{
Double valorAux =(Double) jtProdutos.getValueAt(i, 5 );
soma+= valorAux.doubleValue();
}

JTxtValorTotalProdutos.setText(String.valueOf(soma));
//valorTotal = 0;
}
}
[/code]

Alguém pode-me ajudar resolver este problema?

Você pode criar um botão “Calcular total” e colocar esse código no ActionListener do botão.

Vini dê uma olhada para mim nesse código ele não esta fazendo nenhuma ação no botão, sabe oque está errado:

[code]private void calculaTotalProdutos()
{
//adiciona listenr para o botao
JBtnCalculartotalVenda.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ev){
for (int i = 0 ; i < jtProdutos.getColumnCount() ; i++)
{
if (jtProdutos.getValueAt(i, 0).equals(true))
{
Double valorAux =(Double) jtProdutos.getValueAt(i, 5 );
soma+= valorAux.doubleValue();
}

JTxtValorTotalProdutos.setText(String.valueOf(soma));

}
}
});
[/code]

No botão só chamei o método.

Já tentou colocar um breakpoint aí?

Botei Breakpoint, ele só consegue entrar onde adicionei ActionListener no botão e não entra no método actionPerformed.

Alguém pode-me dar uma ideia melhor aqui?

Galera ajuda aí estou precisando muito.

Mas vc tentou colocar o breakpoint dentro do actionlistener, no for, e clicar no botão?

Pq seu código parece certo.

Vini fiz isso, só que dá erro na linha que esta em negrito no final do código.

private void calculaTotalProdutos() { try{ for (int i = 0 ; i < jtProdutos.getColumnCount() ; i++) { Double valorAux =(Double) jtProdutos.getValueAt(i,5); soma+= valorAux.doubleValue(); } JTxtValorTotalProdutos.setText(String.valueOf(soma)); } catch(Exception e){ JOptionPane.showMessageDialog(null,"Erro ao calcular Total Produtos: "+e.getMessage()); } }

Dá erro neste linha corta a execução e cai no catch e retorna a mensagem 5>=5
Double valorAux =(Double) jtProdutos.getValueAt(i,5);

No seu for, não deveria ser getRowCount() no lugar de getColumnCount()? Você vai somar os dados das linhas, não das colunas.

Bom dia Vini,

Eu tentei com RowCount, dá mesmo erro quando chega nessa linha.

  Double valorAux =(Double) jtProdutos.getValueAt(i, 5);

Quando cai no catch retorna uma mensagem 5>=5.

Sabe o que pode ser?

Provavelmente sua tabela tem 5 colunas. Então, o índice da quinta coluna será 4, não 5. Lembre-se a primeira coluna tem índice 0.

Pessoal me ajudem aqui, estou precisando muito.

Vini funcionou sim, era indice a mais.

Outra coisa eu vi um postagem que vc falou sobre evento actionTableModel, para o que serve?