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 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.
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…
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: