Preciso de ajuda para somar uma coluna de uma JTable

Bom dia, eu utilizo o netbeans, então eu criei um JFrame adicionei uma tabela e vinculei ela a uma tabela do banco de dados, eu preciso somar uma coluna desta tabela ex:

Cliente | Valor
Fulano 1
Beltrano 2

Total 3

O máximo que consegui pesquisando na internet foi fazer contar o total de linhas, queria saber se alguem pode me ajudar a me dizer como faço para somar essa coluna e jogar em um jtextfield ou jlabel,
desde já agradeço a atenção.

Tratando-se de apenas uma coluna, basta obter o valor da célula em questão (que, coincidentemente será o ponto de encontro de uma linha com a dita coluna). Após obter o valor, você precisará armazenar o mesmo em uma variável. Caso seja a primeira linha, este objeto deve possuir valor zero. A partir da primeira, ele será acrescido do valor da coluna que está sendo lida naquele momento.

na verdade vou precisar de mais colunas, no total são três, eu não sei como faço para obter o valor da coluna, minha duvida é saber se existe algum método em que eu informe a posição, no caso da minha tabela preciso somar as posições 2,3 e 4 da tabela do banco.

pensei em criar um for e percorrer todas as linhas da tabela e somar somente aquele determinado campo, algo como “total += tabela.coluna” claro que isso a grosso modo sem tratar os tipos das variaveis.
só que não sei se é possivel fazer isso e caso seja possivel, como fazer…

desde ja obrigado

Ler a documentação da JTable você não tentou ainda?

Ok. Vou pesquisar

Veja aqui

http://docs.oracle.com/javase/7/docs/api/

é possivel sim cara, é algo ate simples, como ja foi explicado, percorre a tabela, se for a celula q vc deseja somar o valor vc incrementa o valor de alguma variavel.
Outra coisa, procure implementar seu proprio tablemodel:

http://www.javasimples.com.br/swing-awt/death-to-defaulttablemodel-abstracttablemodel-rulez

Eu agradeço a ajuda, mais apenas para informar eu pesquisei no google e em outros fórums antes de postar aqui, inclusive é mais facil procurar no google primeiro.
Não precisa digitar login e senha, clicar em criar tópico nem nada, …

de qualquer forma obrigado pela atenção

[quote=yurifw]http://docs.oracle.com/javase/7/docs/api/

é possivel sim cara, é algo ate simples, como ja foi explicado, percorre a tabela, se for a celula q vc deseja somar o valor vc incrementa o valor de alguma variavel.
Outra coisa, procure implementar seu proprio tablemodel:

http://www.javasimples.com.br/swing-awt/death-to-defaulttablemodel-abstracttablemodel-rulez[/quote]

Lendo, obrigado, posto aqui para dizer se deu tudo certo!

Cara, você pode incluir a função SUM(“coluna”) do proprio sql, ela é usada no proprio select, da mesma forma que o count.

Por exemplo: SELECT SUM(“NOME DA COLUNA”) FROM “TABELA”…

[quote=GabrielMantini]Cara, você pode incluir a função SUM(“coluna”) do proprio sql, ela é usada no proprio select, da mesma forma que o count.

Por exemplo: SELECT SUM(“NOME DA COLUNA”) FROM “TABELA”…[/quote]

O problema é que declarei tudo varchar no banco, mais acho que essa vai ser a saida, o problema é que ja tem uns 500 registro nessa tabela, mais obrigado!

Creio que estou no caminho de uma solução, achei um tópico no forum e utilizei o seguinte:

double soma = 0; for (int i = 0; i < clientetable.getColumnCount(); i++) { Double valor = (Double) clientetable.getValueAt(i, 2); soma += valor.doubleValue(); } clitotaltf.setText(String.valueOf(soma));

porem agora me retorna um erro acho que é de casting:

run: [EL Info]: 2013-07-19 08:06:14.247--ServerSession(21701394)--EclipseLink, version: Eclipse Persistence Services - 2.5.0.v20130507-3faac2b [EL Info]: connection: 2013-07-19 08:06:14.664--ServerSession(21701394)--file:/C:/Users/mavitech/Desktop/SOFTWARE AGTECH/Projeto/AgTech/build/classes/_agtechPU login successful Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Double at br.com.view.FaturamentoView.jButton1ActionPerformed(FaturamentoView.java:323) at br.com.view.FaturamentoView.access$900(FaturamentoView.java:19) at br.com.view.FaturamentoView$FormListener.actionPerformed(FaturamentoView.java:265) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6505) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6270) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:682) at java.awt.EventQueue$3.run(EventQueue.java:680) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:696) at java.awt.EventQueue$4.run(EventQueue.java:694) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:693) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Mais eu não entendo pq eu estou convertendo para double o valor recebido da linha, pensei que fosse a maneira de converter o erro dai utilizei o Double.parseDouble() mas dai da um erro de objeto informando que requer uma string e foi encontrado um objeto.

socorro! rs… desde já obrigado

double soma = 0; for (int i = 0; i < clientetable.getColumnCount(); i++) { Double valor = (Double) clientetable.getValueAt(i, 2); soma += valor.doubleValue(); } clitotaltf.setText(String.valueOf(soma));

tente usar clientetable.getValueAt(i, 2).toString();
ou
new String(clientetable.getValueAt(i, 2));

outra coisa que não sei se tem haver, mas acho q vale a pena tentar, use o tipo double ao inves da classe Double

a condição do for ta certa mesmo? n seria rowcount n cara?

Bem notado, não tinha visto isso tbm…

Mas existe tbm a função next, que retorna falso quando não existe a proxima row na tabela.

Mas quanto ao problema de somar os valores, cara, vai dar mto trabalho qualquer coisa que você vá fazer, acho que mais trabalho que criar uma outra tabela e copiar os 50 registros que você disse ter porém usando o tipo de dados mais apropriado, pra evitar essas conversoes desnecessárias.