Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Aikanáro Anário en 27 Marzo 2012, 20:17 pm



Título: Validar que solo se escriban numero de dos dígitos en un jtextfield
Publicado por: Aikanáro Anário en 27 Marzo 2012, 20:17 pm
Estoy tratando de hacerlo poniéndole un DocumentFilter al Document del JTextField, pero no me funciona...

Código
  1. JtextField txtNumero1 = new JTextField();
  2. final PlainDocument doc = new PlainDocument();
  3. doc.setDocumentFilter(new DocumentFilter() {
  4. public void insertString(FilterBypass fb, int off, String str, AttributeSet a)
  5. {
  6. if (fb.getDocument().getLength() + str.length() <= 2) {
  7. fb.insertString(off, str, a);
  8. }
  9. }
  10. });
  11. txtNumero1.setDocument(doc);
  12.  

También hay algo que no entiende ese código, ¿para qué sirve los parámetros FilterBypass y off?


Título: Re: Validar que solo se escriban numero de dos dígitos en un jtextfield
Publicado por: bengy en 28 Marzo 2012, 00:03 am
si le aplicas  a tu jtextfield este metodo???
setColumns(int)

no te entiendo muxo ...


Título: Re: Validar que solo se escriban numero de dos dígitos en un jtextfield
Publicado por: goll9d en 29 Marzo 2012, 02:31 am
Y si prubas asignandole el valor del jtextfield a una variable int y haces una sentencia if

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


Título: Re: Validar que solo se escriban numero de dos dígitos en un jtextfield
Publicado por: Valkyr en 29 Marzo 2012, 23:37 pm
Si simplemente quieres validarlo una vez se ha escrito el texto puedes hacerlo con expresiones regulares. Simplemente podrías hacer lo siguiente:

Código
  1. String texto = field.getText();
  2. if(texto.matches("\d\d")){
  3. ...
  4. }
  5. else{
  6.   System.out.println("Solo numeros de dos cifras");
  7. }

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.


Título: Re: Validar que solo se escriban numero de dos dígitos en un jtextfield
Publicado por: Aikanáro Anário en 31 Marzo 2012, 17:38 pm
Al final decidí optar por el JFormattedTextField y el InternationalFormatter


Título: Re: Validar que solo se escriban numero de dos dígitos en un jtextfield
Publicado por: azknight en 11 Julio 2012, 07:56 am
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();
        }
                }
            });