Foros del Web » Programación para mayores de 30 ;) » Java »

Validad Textfield que solo acepte un solo "punto" .

Estas en el tema de Validad Textfield que solo acepte un solo "punto" . en el foro de Java en Foros del Web. hola a todos necesito validar un textfield solo me acepte un solo punto decimal estuve buscando los paremetros del KeyEvent pero no encontre algo para ...
  #1 (permalink)  
Antiguo 27/11/2010, 22:10
Avatar de guichogdl  
Fecha de Ingreso: abril-2010
Ubicación: gdl
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
Validad Textfield que solo acepte un solo "punto" .

hola a todos necesito validar un textfield solo me acepte un solo punto decimal estuve buscando los paremetros del KeyEvent pero no encontre algo para esto

espero alguien me pueda ayudar con esto

saludos y gracias de antemano
  #2 (permalink)  
Antiguo 27/11/2010, 23:40
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 5 meses
Puntos: 24
Respuesta: Validad Textfield que solo acepte un solo "punto" .

Cita:
Iniciado por guichogdl Ver Mensaje
textfield solo me acepte un solo punto decimal
No entiendo muy bien ¿Tú deseas que el jTextField te acepte el punto y nada más? ¿O estás validando un jTextField y quieres que te acepte un numeral, y como éstos tiene a lo más un punto decimal, entonces deseas que el jTextField te acepte todos los números (léase del 0 al 9) y sólo un punto decimal... ¿es así?

No soy un experto ni mucho menos, pero igual tengo algunas ideas que pueden ayudarte:

Si sólo quieres que te acepte UN punto decimal y absolutamente nada más, podrías usar el InputVerifier: (esto te permitirá teclear cualquier cosa en el jTextField, pero cuando quieras abandonar el foco, te regresará al jTextField y borrará el contenido a no ser que lo ingresado sea un sólo punto)

Crea una clase Verificador que hereda de InputVerifier, así:
Código Java:
Ver original
  1. import javax.swing.InputVerifier;
  2. import javax.swing.JComponent;
  3. import javax.swing.JTextField;
  4.  
  5.  
  6. public class Verificador extends InputVerifier {
  7.  
  8.  
  9.     public boolean verify(JComponent editor) {
  10.         if (editor instanceof JTextField)
  11.         {
  12.             String clave = ((JTextField)editor).getText();
  13.                         if (clave.equals(".")){
  14.                             return true;
  15.                         }
  16.  else{
  17.                             ((JTextField)editor).setText("");
  18.                             return false;
  19.  }                      
  20.         }
  21.         return true;
  22.     }
  23. }
Luego, en la clase en la cual tienes creado tu jTextField, agrega esto:
Código Java:
Ver original
  1. tuJTextField.setInputVerifier(new Verificador());

Ahora, si lo que quieres es que sea un numeral (que como sabemos, contiene sólo un punto decimal), podrías intentar de nuevo con el InputVerifier, algo como:
Código Java:
Ver original
  1. import javax.swing.InputVerifier;
  2. import javax.swing.JComponent;
  3. import javax.swing.JTextField;
  4.  
  5. public class Verificador extends InputVerifier {
  6.  
  7.     public boolean verify(JComponent editor) {
  8.         if (editor instanceof JTextField)
  9.         {
  10.             String clave = ((JTextField)editor).getText();
  11.             try
  12.             {
  13.                 Double.parseDouble(clave);
  14.                 return true;
  15.  
  16.             }
  17.  
  18.             catch (Exception e)
  19.  
  20.             {
  21.                                 ((JTextField)editor).setText("");
  22.                 return false;
  23.             }
  24.         }
  25.         return true;
  26.     }
  27. }
Esto lo que hace es intentar convertir lo que ingresaste el jTextField a un Double, si puede hacerlo el jTexField queda con el valor que se ingresó. Y si no puede convertirlo a Double, borra lo que se ingresó al jTextField.
De igual manera, en la clase en la cual tienes creado tu jTextField, agrega esto:
Código Java:
Ver original
  1. tuJTextField.setInputVerifier(new Verificador());

Esta es sólo una manera de hacerlo y es la que yo usé alguna vez =)

Última edición por farfamorA; 27/11/2010 a las 23:42 Razón: Ortografía
  #3 (permalink)  
Antiguo 28/11/2010, 00:04
Avatar de guichogdl  
Fecha de Ingreso: abril-2010
Ubicación: gdl
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
Respuesta: Validad Textfield que solo acepte un solo "punto" .

gracias compa por responder, creo que no me di a explicar jeje en el textfield al que quiero validar se introducira una cantidad monetaria.. 15.20 ...10.00 etc

conforme iba validando las cajas me di cuenta que si permito que se introduzca el punto pero :S necesito que no puedan ingresar mas de un punto "."

saludos
  #4 (permalink)  
Antiguo 28/11/2010, 00:14
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 5 meses
Puntos: 24
Respuesta: Validad Textfield que solo acepte un solo "punto" .

¿Y no te sirve el segundo código que te dejé?
Esto lo que hace es intentar convertir lo que ingresaste en el jTextField a un Double (un número con decimales como 15.20 o 10.00), si puede hacerlo el jTexField queda con el valor que se ingresó. Y si no puede convertirlo a Double, borra lo que se ingresó al jTextField y te pide que ingreses nuevamente un valor.
  #5 (permalink)  
Antiguo 28/11/2010, 00:17
Avatar de guichogdl  
Fecha de Ingreso: abril-2010
Ubicación: gdl
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
Respuesta: Validad Textfield que solo acepte un solo "punto" .

claro que si compa muchas gracias por ello solo que quise dejar claro lo que necesitaba ahora mismo estoy probando el codigo.. saludos y gracias nuevamente

Etiquetas: keyevent, textfield, validar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:32.