• Lunes 13 de Mayo de 2024, 14:03

Autor Tema:  No Me Valida  (Leído 1141 veces)

serbc25

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
No Me Valida
« en: Jueves 21 de Diciembre de 2006, 11:09 »
0
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

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: No Me Valida
« Respuesta #1 en: Jueves 21 de Diciembre de 2006, 16:20 »
0
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

escape

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: No Me Valida
« Respuesta #2 en: Domingo 24 de Diciembre de 2006, 17:30 »
0
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.