SoloCodigo

Programación General => Java => Mensaje iniciado por: serbc25 en Jueves 21 de Diciembre de 2006, 11:09

Título: No Me Valida
Publicado por: serbc25 en Jueves 21 de Diciembre de 2006, 11:09
Hola a todos:

Tengo un JTextfield(), en el que solo puedo meter numeros, no caracteres introduzco este evento:

txtEdad.addKeyListener(new KeyAdapter(){
    public void ketTyped(KeyEvent e){
       char tecla = e.getKeyChar();
       if((tecla < '0') && (tecla > '9')){
          e.consume();  // ignorar el evento de teclado
      }
   }
});

Y no me hace nada.

Que solucion hay, gracias
Título: Re: No Me Valida
Publicado por: silverfox en Jueves 21 de Diciembre de 2006, 16:20
Hola...

Citar
if((tecla < '0') && (tecla > '9')){

Veamos...

Si el código del '0' en ASCII es el 48 y el código del '9' es el 57... premio para tí si me dices qué número es menor que el 48 y mayor que el 57 al mismo tiempo.





Un saludo.



Silverfox
Título: Re: No Me Valida
Publicado por: escape en Domingo 24 de Diciembre de 2006, 17:30
Cita de: "serbc25"
Hola a todos:

Tengo un JTextfield(), en el que solo puedo meter numeros, no caracteres introduzco este evento:

txtEdad.addKeyListener(new KeyAdapter(){
    public void ketTyped(KeyEvent e){
       char tecla = e.getKeyChar();
       if((tecla < '0') && (tecla > '9')){
        e.consume();  // ignorar el evento de teclado
      }
   }
});

Y no me hace nada.

Que solucion hay, gracias
Estás utilizando el operador lógico incorrectamente, en vez de utilizar && cambialo por || .

Ahora como observación te sugeriría que no usaras consume() si estás validando entradas de datos a los JTextFields. Siempre es mejor mostrar por pantalla un mensaje que indique al usuario que error ha cometido. Por otra parte, en vez de utilizar el método keyTyped(), cambialo por keyReleased() . La idea seria de esta forma:

Código: Text
  1.  
  2.  
  3. public void keyReleased(KeyEvent e)
  4. {
  5.  
  6.     char tecla = e.getKeyChar();
  7.     JTextField t = (JTextField)e.getSource();
  8.  
  9.     if(tecla &#60; '0' || tecla &#62; '9')
  10.     {
  11.  
  12.           JOptionPane.showMessageDialog(this, &#34;Ingrese Datos Numéricos&#34;, &#34;Error&#34;,
  13.                                                           JOptionPane.ERROR_MESSAGE);
  14.  
  15.           t.setText(&#34;&#34;);
  16.           t.requestFocus();
  17.     }
  18. }
  19.  
  20.  
  21.