Somando Linhas em uma jTable

9 respostas
Veneno

Olá galera …
alguem saberia como somar todas as linhas de uma determinada coluna da jTable???

Obrigadoo…

9 Respostas

Mantu

Tente fazer isso pelo seu TableModel

Veneno

mas como somar as linhas…?? a soma de todas

Mantu

O TableModel da sua JTable. Foi você que criou ou você tá usando algo pronto, tipo DefaultTableModel?

Veneno

eu usei o AbstractTableModel…

Mantu

Mas vc usou o AbstractTableModel pra criar o seu modelo, certo?
Se foi isso, provavelmente vc deve utilizar alguma Collection (Vector, ArrayList, etc) para gerenciar as linhas. Creio que aí seja questão de disponibilizar no seu modelo algum método que retorne a soma das linhas em uma determinada coluna. Esse método, você vai receber por parâmetro qual a coluna que o cidadão quer somar, aí é só percorrer a sua Collection e ir somando os valores.
To saindo do trampo agora, quando chegar em casa (Lá pelas 15:00) eu entro de novo aqui, blz?
Abraço!

Veneno

Olá,
eh isso msm mantu …
eu nao sei como somar as linhas …
percorrer elas eu posso fazer com um for, ne?
se puder me ajudar vlw :smiley:
abraço …

Veneno

seria ± assim ???

public ArrayList soma(){
        ArrayList obj = new ArrayList();
        int tabela = jTable2.getRowCount();
        String result ="";   
        for(int i=0;i<tabela;i++){
           result = jTable2.getValueAt(tabela,4).toString();
           //aqui faria a soma das linhas???
        }
        obj.add(result);
        return obj;
    }

o problema eh a soma das linhas…
alguem me ajuda?
vlw

Mantu

Vou colocar um exemplinho aqui. Dê uma lida e pergunte qq dúvida

import javax.swing.JTable;

public class SumLines {
	public static void main(String[] args) {
		Object
			columnNames[] = {"Cargo", "Masculino", "Feminino"},
			rowData[][] = {
				{"Consultor", 2, 2},
				{"Executivo", 5, 6},
				{"Analista", 37, 25},
				{"Desenvolvedor", 52, 58}
			}
		;
		final int
			MASC = 0,
			FEM = 1,
			CONS = 0,
			EXEC = 1,
			ANL = 2,
			DSV = 3
		;
		
		JTable table = new JTable(rowData, columnNames);
		
		int[]
			totalPorSexo = new int[table.getColumnCount() - 1],
			totalPorCargo = new int[table.getRowCount()]
		;
		
		for(int r = 0; r < totalPorCargo.length; r++) {
			for(int c = 0; c < totalPorSexo.length; c++) {
				totalPorCargo[r] += (Integer)table.getValueAt(r, c + 1);
				totalPorSexo[c] += (Integer)table.getValueAt(r, c + 1);
			}
		}
		
		System.out.println("Total de Homens: " + totalPorSexo[MASC]);
		System.out.println("Total de Mulheres: " + totalPorSexo[FEM]);
		System.out.println("Total de Consultores: " + totalPorCargo[CONS]);
		System.out.println("Total de Executivos: " + totalPorCargo[EXEC]);
		System.out.println("Total de Analistas: " + totalPorCargo[ANL]);
		System.out.println("Total de Desenvolvedores: " + totalPorCargo[DSV]);
	}
}
CarlosFontana

Blz Mantu!? Encontrei esse tópico que discute exatamente o que eu estou tentando resolver mas no meu caso preciso somar os valores informados no campo valorIcmsProdutos da tabela onde fica os itens de produtos para que possa ser comparado com o valor informado no campo Valor Icms que está nos detalhes da nota. No exemplo você trabalha com int, para valores com double ou bigdecimal, teria que fazer algo de diferente? Tentei implementar no meu código mas retorna erro na linha:

valorTotalIcmsProdutos[r] += (Double)tabela.getValueAt(r, 3);

Desde já agradeço!

Criado 22 de dezembro de 2006
Ultima resposta 14 de mar. de 2012
Respostas 9
Participantes 3