Alguem pode me ajudar, pois no meu sistema eu tenho varios dados em um JTable,
mas preciso fazer um calculo em uma coluna,
por ex:
Codigo | Data | Valor
1 01.02.2010 35,00
2 01.02.2010 50,00
Preciso somar a ultima coluna e jogar o resultado em um Label (Valor = 85,00)
Alguem pode me ajudar?
Pegue a lista de objetos que deu origem ao seu TableModel, faça a soma e jogue no label. Pouco importa o que a JTable desenhou.
esses dados são carregados? ou o usuario pode digitar isso?
qualquer coisa com um loop vc consegue
BigDecimal total = BigDecimal.ZERO;
for(int i = 0; i < tabela.getRowCount();i++){
String valor = tabela.getValueAt(i, 2)+""; //lembrando que 2 é o indice da coluna valor.
BigDecimal vl = new BigDecimal(valor.replace(",", "."));
total = total.add(vl);
}
Utilizo o BigDecimal por ele é mais preciso para fazer calculo com valores.
Deu certo dessa forma que você me passou.
Muito Obrigado.
Agora estou precisando de outra ajuda,
nessa mesma tabela que mostrei acima tem o seguinte:
Codigo | Tipo | Data | Valor |
1 Entrada 01.01.2010 35,00
2 Saida 01.01.2010 20,00
Quero fazer uma calculo entre esses campos, com o filtro Entrada e Saida:
Quando for entrada ele soma quando for saida ele subtrai, tentei fazer o seguinte
somar tudo que for Tipo == Entrada
mas imprime no Label = 0
Segue o Codigo:
String TipoE = "Entrada"";
BigDecimal total = BigDecimal.ZERO;
preencherJtable(); //metodo para preencher JTable
for(int i = 0; i < jTable1.getRowCount();i++){
String Tipo = jTable1.getValueAt(i, 3)+""; //pegando a coluna que quero fazer o equals
while(Tipo.equals(TipoE)){
String valor = jTable1.getValueAt(i, 5)+""; //pegando a coluna que quero fazer o calculo com filtro di Tipo
BigDecimal vl = new BigDecimal(valor.replace(",", "."));
total = total.add(vl);
}
}
Label_Valor.setText(String.valueOf(total)); //Lable que imprime o resultado
mas quando eu executo esse codigo trava a minha maquina e não da erro algum…
tenho que finalizar o programa no gerenciador de Tarefas.
Alguem pode me ajudar?
Consegui Fazer o que perguntei acima:
Ficou assim:
String TipoE = "Entrada", TipoS = "Saida";
BigDecimal totalSaida = BigDecimal.ZERO;
BigDecimal totalEntrada = BigDecimal.ZERO;
BigDecimal total = BigDecimal.ZERO;
preencherJtable();
try{
for(int i = 0; i < jTable1.getRowCount();i++){
String valorEntrada = String.valueOf(jTable1.getValueAt(i,3));
if(valorEntrada.equals(TipoE)){
String valor = jTable1.getValueAt(i, 5)+""; //lembrando que 2 é o indice da coluna valor.
BigDecimal v1 = new BigDecimal(valor.replace(",", "."));
totalEntrada = totalEntrada.add(v1);
String resEntrada = totalEntrada.toString();
}
}
for(int x = 0; x < jTable1.getRowCount();x++){
String valorSaida = String.valueOf(jTable1.getValueAt(x,3));
if(valorSaida.equals(TipoS)){
String valor = jTable1.getValueAt(x, 5)+""; //lembrando que 2 é o indice da coluna valor.
BigDecimal v2 = new BigDecimal(valor.replace(",", "."));
totalSaida = totalSaida.add(v2);
String resSaida = totalSaida.toString();
}
}
total = totalEntrada.subtract(totalSaida);
Label_Valor.setText(String.valueOf(total));
}
catch (NullPointerException erro){
System.out.println(erro.getMessage());
}