[RESOLVIDO] JFormattedTextField

16 respostas Resolvido
java
T

Olá,eu estou fazendo um calculador de dívidas,para isso usei JTextFields(OBS:Eu sei que existe o glorioso JTable mas prefiro usar este)
os nomes são: a3,b3,c3,d3,e3
Por aí tudo bem mas eu notei que mesmo convertendo os números contidos dentro dos JTextFields como double,se eu colocar:
num.num em algum JTextField
O eclipse acusa erro
Pesquisei muito sobre isto e achei alguns tópicos sobre o JFormattedTextField o qual provavelmente é a solução para meus problemas aceitando o (".") e também o (","),mas no entanto quero mais informações que me ajudem,pois eu não encontrei muita coisa a respeito do meu problema,o qual é:aceitar o ponto e a vírgula,aliás eu não sei nem como mexer com o JFormattedTextField,poderiam me ajudar?
Obrigado!

16 Respostas

R

Primeiramente precisará decidir se usará o ponto ou a vírgula como separador de decimal.
Depois, se tbm quiser suportar separador de milhar, ai as opções ficam em usar DecimalFormat ou JFormattedTextField. Ambos vão ter uma máscara para fazer o parse do valor.

T

Ok,eu pretendo usar o seperador decimal de vírgula.Poderia me ensinar como eu posso fazer isto?Obrigado

R
T

Deixa eu ver se eu entendi
No DecimalFormat aonde você coloca os #### é tecnicamente o local onde os números/carácteres adentram,então no meu caso iria ser: ###,### ???
Eu estou sem meu pc e não posso testar

R

No decimalFormat, pra locale PT, virgula é ponto e vice-versa

T

Ok,deu tyudo bem,mas como faço para o valor do JTextField aceitar o DecimalFormat?Eu já coloquei o DecimalFormatSymbols e tudo mais ,agora eu só quero que o valor do JTextField aceite o DecimalFormat(nesse caso o jtextfield.getText() ) :+1:

R

E pq tá usando DecimalFormatSymbols? N lestes minha ultima resposta?
Precisa ler e compreender o tópico, sair copiando td n vai resolve

T

Achei que seria necessário,mas irei tirar

T

Porém eu compreendi,mas não entendi como aplicar no JTextField para se alguém digitar um número com vírgula o Eclipse compreender que se trata de um número do tipo double,eu já pesquisei varios tópicos,o problema é que eles têm outros objetivos,assim não consigo compreender completamente

T

Contando este tópico que você resolveu,ele tinha outro objetivo completamente diferente do meu,não estou dizendo que só estou aqui pra copiar códigos,só quero absorver para aperfeiçoar meu projeto :+1:t2:

R

Poisé, o objetivo n importa, lá tem tudo q vc precisa saber pra fazer.
DecimalFormat é o recurso q vai resolver seu problema, pode pesquisar sobre isso em qualquer lugar pra “absorver” ou esperar aqui alguém que lhe dê o código q resolva seu problema.

T

Eu dei uma pesquisada,fiz uns testes e deduzi que eu não preciso de nenhum dos dois,pois eles só colocam uma virgula automática,eu quero só que o JTextField aceite virgula exemplo:
3,5
Mas o Eclipse acusa erro,oque fazer quando alguém quiser fazer um calculo com número com vírgula?Não irá dar certo,na verdade estava tentando métodos feitos por mim mas nenhum chegou a realmente resolver meu problema :cry:

R

Sendo assim, na verdade o JTextField aceita virgula sem vc fazer nada, é só pressionar a tecla q ela aparece no campo…

T

Não é isto,colocar você coloca,mas o eclipse acusa erro,quero fazer um calculador de dívidas,algumas contas não tem números exatos,entendeu?

T

Isto realmente enche a cabeça,já tentei muitos métodos e realmente nada esta funcionando mas provavelmente não é nada muito difícil,eu que sou leigo em java e não consigo resolver estes problemas simples

T
Solucao aceita

Resolvi,estava passando o jtextfield.getText() para int com o Integer.parseint()
Assim o eclipse acusava erro
Para você que esta com dúvida e quer fazer cálculo com números decimais pelo JTextField troque o Integer.parseInt() para Double.parseDouble(),a única coisa ruim é que ele não detecta vírgula,só ponto então usem

.replace(’,’,’.’)

Isso faz com oque a vírgula seja detectada como um ponto,então os dois podem ser usados:
Código completo de um JTextField:

JTextField exemplo = new JTextField();
double x = Double.parseDouble(exemplo.getText().replace(’,’,’.’));

Criado 4 de julho de 2018
Ultima resposta 6 de jul. de 2018
Respostas 16
Participantes 2