Dúvidas com JTable

7 respostas
Felipe_Bonesso

Boa noite a todos!

Estou desenvolvendo um sistema para fluxo de caixa no qual estou utilizando uma JTable para listar todos os dias de um determinado mês e todos os gastos dos mesmos. As colunas desse JTable estão definidas como double e no banco de dados idem (com máscara monetária).

O que ocorre é que não estou conseguindo colocar o cifrão nas colunas (R$), pois as mesmas não aceitam String. Gostaria de saber se existe alguma forma de coloca-lo.

Estou preenchendo a JTable da seguinte maneira:

double consultoria = ConnectionFactory.resultSet.getDouble("consultoria");

modelo.addRow(new Object[]{consultoria});

Agradeço a todos!

7 Respostas

ambuzr
Felipe Bonesso:
Boa noite a todos!

Estou desenvolvendo um sistema para fluxo de caixa no qual estou utilizando uma JTable para listar todos os dias de um determinado mês e todos os gastos dos mesmos. As colunas desse JTable estão definidas como double e no banco de dados idem (com máscara monetária).

O que ocorre é que não estou conseguindo colocar o cifrão nas colunas (R$), pois as mesmas não aceitam String. Gostaria de saber se existe alguma forma de coloca-lo.

Estou preenchendo a JTable da seguinte maneira:

double consultoria = ConnectionFactory.resultSet.getDouble("consultoria");

modelo.addRow(new Object[]{consultoria});

Agradeço a todos!

cara faz assim

seta o teu jtable como String mesmo, depois e so coloca assim

modelo.addRow(new Object[]{"R$ "+consultoria})
Felipe_Bonesso

Mas ai é que está o problema, se eu setar como String, como eu faria na hora de gravar os dados alterados pelo usuário? Pois dai teria caracteres inválidos na hora de passar para o bd… :?

Eu imaginava algo como alguma máscara ou outra coisa parecida…

Dieval_Guizelini

Eu recomendo usar uma classe especializada de TableCellRenderer. Afinal o que você quer é mudar a apresentação e não a informação…

Veja um bom exemplo aqui:

http://exampledepot.com/egs/javax.swing.table/CustRend.html

fw

fabim

Eu consigo enxergar cifrão em um Relatório.
Numa célula de JTable, estranho.

ambuzr
Felipe Bonesso:
Mas ai é que está o problema, se eu setar como String, como eu faria na hora de gravar os dados alterados pelo usuário? Pois dai teria caracteres inválidos na hora de passar para o bd... :?

Eu imaginava algo como alguma máscara ou outra coisa parecida...

nenhum problema, alias fica horrivel no Jtable 12555.32(afinal ta em double) onde deveria R$ 12.555,32 nao acha?

faz assim eu to fazendo um sisteminha desse mesmo jeito seu pra cheques e fiz assim supondo q ja ta como monetario

quando vc for receber o valor da sua Jtable faz como eu fiz

String valorAlterar="";
 Double valorAlterado = 0.0;
//VAMOS CRIAR AS DUAS VARIAVEIS QUE VAMOS TRABALHAR PRO NUMERO FICAR DA FORMA CORRETA
   
valorAlterar = jTable1.getValueAt(1, 1).toString().replace("R$ ", "");
//PRIMEIRO RECEBEMOS O VALOR DA TABELA Q ESTA NA LINHA 1 COLUNA 1 PRA EXEMPLO, .toString() E PQ ELE E UM OBEJTO E QUEREMOS TRABALHAR COMO STRING ENTAO ESSE ARGUMENTO TRANSFORMA OBJETO EM STRING, .replace("R$ ", "") E O METODO QUE SUBSTIRUI UM CARACTER ENCONTRADO NUMA STRING EM OUTRO QUE VC ESCOLHER NO CASO TODO QUE ELE ENCONTRAR COM R$ VAI SER SUBSTITUIDO POR NADA

valorAlterar = valorAlterar.replace(".", "");
//AQUI TIRAMO OS PONTOS

valorAlterar = valorAlterar.replace(",", ".");
AQUI TIRAMOS A VIRGULA E TRANSFORMAMOS EM PONTO

valorAlterado = Double.parseDouble(valorAlterar);
//RECEBE O VALOR JA ALTERADO

eu tenho um jeito q fiz que transforma Double em valor monetario pra setar no Jtable pro usuario ver, qualquer coisa eu te passo quando chegar em casa

Felipe_Bonesso
ambuzr:
Felipe Bonesso:
Mas ai é que está o problema, se eu setar como String, como eu faria na hora de gravar os dados alterados pelo usuário? Pois dai teria caracteres inválidos na hora de passar para o bd... :?

Eu imaginava algo como alguma máscara ou outra coisa parecida...

nenhum problema, alias fica horrivel no Jtable 12555.32(afinal ta em double) onde deveria R$ 12.555,32 nao acha?

faz assim eu to fazendo um sisteminha desse mesmo jeito seu pra cheques e fiz assim supondo q ja ta como monetario

quando vc for receber o valor da sua Jtable faz como eu fiz

String valorAlterar="";
 Double valorAlterado = 0.0;
//VAMOS CRIAR AS DUAS VARIAVEIS QUE VAMOS TRABALHAR PRO NUMERO FICAR DA FORMA CORRETA
   
valorAlterar = jTable1.getValueAt(1, 1).toString().replace("R$ ", "");
//PRIMEIRO RECEBEMOS O VALOR DA TABELA Q ESTA NA LINHA 1 COLUNA 1 PRA EXEMPLO, .toString() E PQ ELE E UM OBEJTO E QUEREMOS TRABALHAR COMO STRING ENTAO ESSE ARGUMENTO TRANSFORMA OBJETO EM STRING, .replace("R$ ", "") E O METODO QUE SUBSTIRUI UM CARACTER ENCONTRADO NUMA STRING EM OUTRO QUE VC ESCOLHER NO CASO TODO QUE ELE ENCONTRAR COM R$ VAI SER SUBSTITUIDO POR NADA

valorAlterar = valorAlterar.replace(".", "");
//AQUI TIRAMO OS PONTOS

valorAlterar = valorAlterar.replace(",", ".");
AQUI TIRAMOS A VIRGULA E TRANSFORMAMOS EM PONTO

valorAlterado = Double.parseDouble(valorAlterar);
//RECEBE O VALOR JA ALTERADO

eu tenho um jeito q fiz que transforma Double em valor monetario pra setar no Jtable pro usuario ver, qualquer coisa eu te passo quando chegar em casa


Ah sim, entendi essa lógica, realmente da uma boa diferença pro usuário visualizar 5.0 e visualizar R$ 5,00.

Vou ver como implementar isso em minha aplicação, e claro, se for possível me passar a maneira como você fez eu agradeceria!

Muito obrigado mesmo pela ajuda :wink:

ambuzr

opa, so vi sua menssagem agora, mas tudo bem, olha como e facil transformar Double em valor monetario:

DecimalFormat formatador = new DecimalFormat();

Double numeroDouble = 2512121.32;
String novoNumero = "" ;

novoNumero = novoNumero + "R$ ";

 novoNumero = formatador.format(numeroDouble);

System.out.println(novoNumero);

//saida
R$ 2.512.121,32

valeu :D

Criado 9 de setembro de 2008
Ultima resposta 22 de set. de 2008
Respostas 7
Participantes 4