esse codigo verifica se é digito ou nao mas preciso limitar a somente 2 digitos no caso o (.)ponto e a (,)virgula se ja foi digitado mais que 2 RETURN como poderia fazer isso ??
isso ai conta certo porem preciso fazer se tiver mais de 2 letras e eu apagar no jtextfield as letras ele nao zera o total
suelengc
Olá fabiodurgante!
Deixa eu ver se entendi bem sua dúvida, você precisa contar os dígitos de um número que será recebido como tipo String e se for mais de 2 dígitos (, +. ou . + . ou , + , ou etc.)você deseja retornar “false”, está certo?
preciso que entre no IF somente se tiver 1 unica (,)virgula entendeu se tiver 1 virgula entra no if, se eu apagar a virgula do jtextfield ai posso novamente entrar no IF
suelengc
Olá fabiodurgante!
Se seu problema foi o que mencionei, acredito que o código abaixo seja uma sugestão de solução:
publicclassguj2{/** * @param args */publicstaticvoidmain(String[]args){if(TemMaisQueDoisDigitos("1.547,42."))System.out.println("Tem mais q 2 ");elseSystem.out.println("Tem ate 2 ");}publicstaticbooleanTemMaisQueDoisDigitos(Stringx){intqtdDigitos=0;for(inti=0;i<x.length();i++){chardig=x.charAt(i);if(dig=='.'|dig==','){if(++qtdDigitos>2){returntrue;}}}returnfalse;}}
Já sobre o “outro” problema, de pegar o valor do JTextField que está em uma classe e passar para outra, eu vejo duas opções:
Você pode criar um listener para ele e setar este listener ou
Você pode recuperar na sua classe atual via getText() mesmo, e passar como parâmetro para a classe.método que você precisa…
Bem, espero ter ajudado mesmo sem entender ao certo seu problema rsrsrs
Se tiver mais dúvidas, posta seu código todo aqui (pelo menos os das classes em questão) assim fica mais fácil te ajudar.
Abraços!
fabiodurgante
toda a classe essa classe so aceita numeros e 1 ponto e 1 virgula o que nao consegui fazer ate agora, ela agora aceita somente numeros virgulas e pontos quantos quizer, quero numero quantos quizer e 1 ponto e 1 virgula
packagejtextfield_somente_numero;importjavax.swing.*;importjavax.swing.text.*;publicclassJMoneyTextFieldextendsJFormattedTextField{publicJMoneyTextField(){setDocument(newNumberDocument());}publicclassNumberDocumentextendsPlainDocument{publicNumberDocument(){super();}publicvoidinsertString(intoffset,Stringstr,AttributeSetattr)throwsBadLocationException{//permite apenas uma virgulaif(str.equals(".")||str.equals(","))if(str.indexOf(",")>-1){super.insertString(offset,str,attr);}if(str.codePointAt(0)<48||str.codePointAt(0)>57)return;super.insertString(offset,str,attr);}}}//USES jtextfield > personalizar codigo > criacao personalizada > new JMoneyTextField()
JuniorMaia
Vamos lá:
for (char c : s.toCharArray()) {
int contador = 0;
if(c.equals(".") || c.equals(",")) {
contador++;
if(contador > 2) {
//aqui vc implementa teu código para retornar o erro ou o que tu quiser
}
}
//aqui passou, tem 2 ou menos caracteres , ou .
}
Explicando:
Aqui você atribui pro char c cada carcter da tua string