Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/11/2010, 23:40
Avatar de farfamorA
farfamorA
 
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 14 años, 1 mes
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