Validar que solo se escriban numero de dos dígitos en un jtextfield

Iniciado por Aikanáro Anário, 27 Marzo 2012, 20:17 PM

0 Miembros y 1 Visitante están viendo este tema.

Aikanáro Anário

Estoy tratando de hacerlo poniéndole un DocumentFilter al Document del JTextField, pero no me funciona...

Código (java) [Seleccionar]

JtextField txtNumero1 = new JTextField();
final PlainDocument doc = new PlainDocument();
doc.setDocumentFilter(new DocumentFilter() {
public void insertString(FilterBypass fb, int off, String str, AttributeSet a)
throws BadLocationException
{
if (fb.getDocument().getLength() + str.length() <= 2) {
fb.insertString(off, str, a);
}
}
});
txtNumero1.setDocument(doc);


También hay algo que no entiende ese código, ¿para qué sirve los parámetros FilterBypass y off?
Lo que faltaba en internet: http://binar10s.blogspot.com/

.rn3w.

si le aplicas  a tu jtextfield este metodo???
setColumns(int)

no te entiendo muxo ...

goll9d

Y si prubas asignandole el valor del jtextfield a una variable int y haces una sentencia if

Código (java) [Seleccionar]

int i = interger.parseint(...); //No me acuerdo muy bien el nombre del metodo :P :P :P
if(i.length==2){
..........
}else{
jtext.settext(null);
}

Valkyr

Si simplemente quieres validarlo una vez se ha escrito el texto puedes hacerlo con expresiones regulares. Simplemente podrías hacer lo siguiente:

Código (java) [Seleccionar]

String texto = field.getText();
if(texto.matches("\d\d")){
...
}
else{
   System.out.println("Solo numeros de dos cifras");
}


Es decir, dejas que el usuario escriba, recuperas el texto escrito, aplicas la expresión regular con el método de la clase String matches y si es verdadero será porque el usuario ha escrito dos digitos.

Si lo que quieres es restringir que al pulsar una tecla se refleje en el propio campo me imagino que podría hacerse manejando los eventos de las teclas presionadas y restringiendo que solo sean numéricas, sin embargo no me parece una solución muy "elegante".

Saludos.

Aikanáro Anário

Al final decidí optar por el JFormattedTextField y el InternationalFormatter
Lo que faltaba en internet: http://binar10s.blogspot.com/

azknight

hay una manera sencilla de validar los textfields.  Es usar un listener para los eventos que se generen del teclado, en mi parecer y con el tiempo que llevo programando me parece el método mas eficaz y mas versátil, pues puedes validar lo que sea.

Componente.Textbox.addKeyListener(new KeyAdapter() {
        public void keyTyped(KeyEvent e){

        int caracter = e.getKeyChar();
        if((caracter < '0') || (caracter > '9')){
                java.awt.Toolkit.getDefaultToolkit().beep();
                e.consume();}
        if(TxtCedula.getText().length()>1){
                java.awt.Toolkit.getDefaultToolkit().beep();
                e.consume();
        }
                }
            });