Limitar o numero de Digitos no JtextField

6 respostas
lorena_aoliveira

Boa tarde!

Eu tenho um jtextField , que só aceita número e gostaria de saber como faço para limitar o número de dígitos nele.

Abrigada.

6 Respostas

Pedrosa

Eu uso esse método:

public static String maxLength(String entrada,int tamanho){
    StringBuffer saida = new StringBuffer();
    char[] caracteres = removeCaracters(entrada).toCharArray();
    for(int i=0;i<caracteres.length && i<=tamanho;i++){
       saida.append(caracteres[i]);
    }
    return saida.toString();
}

E no evento do campo chamo assim:

txtOu.addKeyListener(
         		new KeyListener(){
 
 					public void keyTyped(KeyEvent e) {
 						txtOu.setText(maxLength(txtOu.getText(),8));
 					}
 
 					public void keyPressed(KeyEvent e) {
 						txtOu.setText(maxLength(txtOu.getText(),8));
 					}
 
 					public void keyReleased(KeyEvent e) {
 						txtOu.setText(maxLength(txtOu.getText(),8));
 					}
         			
         		}
);
Mantu

Pedrosa,
O que o “removeCaracteres(String)” faz???

lorena_aoliveira

Coloquei este código, mas esta dando este erro:
/home/lorena/XComERP/src/xcomerp/test/XtextField_int.java:124: void cannot be dereferenced
char[] caracteres = removeCaracters(entrada).toCharArray();

Pedrosa

Segue o método, que permite somente números, agora funciona.

public static String removeCaracters(String entrada){
	     Pattern numericos = Pattern.compile("[0-9]",Pattern.CASE_INSENSITIVE);
	     Matcher encaixe = numericos.matcher(entrada);
	     StringBuffer saida = new StringBuffer();
	     while(encaixe.find())
	        saida.append(encaixe.group());
	     return saida.toString();
}
lorena_aoliveira

:smiley: Muito obrigada Pedrosa, ficou ótimo.

fabiodurgante

ae aonde q coloco esse evento ele da erro
coloquei no mouse pressed e da erro aqui

jtf_longe_od_esf.addKeyListener(
new KeyListener()
{

public void keyTyped(KeyEvent e) {   
                    jtf_longe_od_esf.setText(maxLength(jtf_longe_od_esf.getText(),8));   
                }   

                public void keyPressed(KeyEvent e) {   
                    jtf_longe_od_esf.setText(maxLength(jtf_longe_od_esf.getText(),8));   
                }   

                public void keyReleased(KeyEvent e) {   
                    jtf_longe_od_esf.setText(maxLength(jtf_longe_od_esf.getText(),8));   
                }   
                   
            }

);

no maxLength da erro diz settext em jcomponet nao pode ser aplicado

e esse metodo aqui aonde que eu uso ele ???

public static String removeCaracters(String entrada){

Pattern numericos = Pattern.compile("[0-9]",Pattern.CASE_INSENSITIVE);

Matcher encaixe = numericos.matcher(entrada);

StringBuffer saida = new StringBuffer();

while(encaixe.find())

saida.append(encaixe.group());

return saida.toString();

}

como uso no jtf_longe_od_esf esse nome do meu jtextfield

Criado 14 de julho de 2006
Ultima resposta 12 de jun. de 2009
Respostas 6
Participantes 4