Dúvidas com JTable

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:

[code]double consultoria = ConnectionFactory.resultSet.getDouble(“consultoria”);

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

Agradeço a todos!

[quote=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:

[code]double consultoria = ConnectionFactory.resultSet.getDouble(“consultoria”);

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

Agradeço a todos![/quote]

cara faz assim

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

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

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…

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

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

[quote=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…[/quote]

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

[code] 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);[/code]
//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

[quote=ambuzr][quote=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…[/quote]

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

[code] 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);[/code]
//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[/quote]
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:

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

[code]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[/code]

valeu :smiley: