Validación de JTextField: TextField numérico, puntos y comas

Seguramente alguna vez te haz encontrado con la necesidad de validar la entrada de datos en algún campo de texto JTextField, por ejemplo que el usuario solo pueda ingresar números dentro del JTextField.

Pues bien conociendo las propiedades adecuadas es posible ajustar las validaciones necesarias para cada tipo de entrada, por ejemplo que acepte solo números, letras, puntos etc.

En este caso la validación será para que el JTextField acepte sólo números

Como ejemplo para este caso usamos un JTexField que solo debe permitir que se ingrese números desde el 0 al 9. Tenemos que editar el evento KeyTyped del JTextfield como se muestra en la imagen, para aceder a ella hacemos clic derecho sobre el jTextfield y seleccionamos Events –> Key –> KeyTyped.

validar-htextfield-para-numeros

Evento KeyTyped de un JTextField

Dentro del evento KeyTyped escribimos el siguiente código

char car = evt.getKeyChar();
if((car<'0' || car>'9')) evt.consume();

El código completo quedaría de esta forma

private void txtNumeroKeyTyped(java.awt.event.KeyEvent evt) {                                         
        char car = evt.getKeyChar();
        if((car<'0' || car>'9') && (car<',' || car>'.')) evt.consume();
        
    }

En el caso de que querramos que el campo de texto soporte números y comas para uso con monedas o puntos decimales el código sería el siguiente.

char car = evt.getKeyChar();
if((car<'0' || car>'9') & (car<'.') || car>'.') evt.consume();

Esto nos permitirá introducir caracteres numéricos con puntos o comas EJ. 1,000.52.

Cada vez que el usuario presione una tecla, se generará este evento y lo que hacemos es sacar el carácter que presiono el usuario que se almacena en la variable evt. Luego, en un simple if decimos: si el carácter no esta entre 0 y 9 lo desechamos . Y de esta manera logramos que el JTextField acepte sólo números.

16 comentarios en “Validación de JTextField: TextField numérico, puntos y comas”

  1. Genial aporte compañero, solo tengo una duda, espero que me puedas ayudar a resolverlo, necesito que acepte caracteres numéricos, letras y caracteres especiales.

    Me podrías asesorar

  2. como puedo hacer la validacion desde una clase, osea crear una clase llamada validacion y llamar desde el Jframe y que valida la entrada de textField

  3. Saludos
    como puedo hacer la validacion de una curp solo quiero que acepte el formato de 18 digitos y que cumpla con el formato de 4 letras, 6 numeros, 6 letras y 2 numeros

    1. Tu caso requiere el uso de un objeto mas especializado de java llamado jFormattedTextfield. revisalo tiene un sin fin de posibilidades que es estan mas alla de un simple jTextField. Saludos

  4. Hola estoy trabajando en un pequeña aplicación y tengo una duda como hago que un campo jtextfield cache los daros de un codigo de un lector de codigo de barra. la verdad me urge

  5. Hola, para permitir solo numeros, coma y punto :
    1) En NetBeans : Boton derecho sobre la caja de texto (en este ejemplo de nombre txtNumero), luego
    Events >Keys > KeyTyped, se agregará el codigo y luego adicionas:
    char car = evt.getKeyChar();
    if((car’9′)&& (car!=’.’) && (car!=’,’ )) evt.consume();
    Finalmente queda asi:
    private void txtNumeroKeyTyped(java.awt.event.KeyEvent evt) {
    // valida input de solo numeros punto y coma
    char car = evt.getKeyChar();
    v if((car’9′)&& (car!=’.’) && (car!=’,’ )) evt.consume();
    }

  6. Hola, para permitir solo numeros, coma y punto :
    1) En NetBeans : Boton derecho sobre la caja de texto (en este ejemplo de nombre txtNumero), luego
    Events >Keys > KeyTyped, se agregará el codigo y luego adicionas:

    char car = evt.getKeyChar();
    if((car’9′)&& (car!=’.’) && (car!=’,’ )) evt.consume();

    Finalmente queda asi:

    private void txtNumeroKeyTyped(java.awt.event.KeyEvent evt) {
    char car = evt.getKeyChar();
    if((car’9′)&& (car!=’.’) && (car!=’,’ )) evt.consume();
    }

  7. amigos una enorme duda con respecto a este tema, quiero imprimir en un simple System.out.println el numero que haya ingresado mi usuario en mi textfield, hasta aqui funciona bien(1), pero tambien quiero que me muestre el valor del textfield y aqui si no me funciona, me muestra de inicio un mensaje en blanco y posteriormente un numero anterior al que voy escribiendo (2), gracias por su valiosa ayuda:

    private void txtNumeroKeyTyped(java.awt.event.KeyEvent evt) {
    int valor=0;
    char car = evt.getKeyChar();
    if((car’9′))
    evt.consume();
    else
    valor = Integer.valueOf(String.valueOf(car));
    System.out.println(«Ultimo valor escrito: «+valor); //(1) esta linea si funciona
    System.out.println(«Valor del TextField «+txtNumero.getText()); //(2) esta linea no funciona
    }

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.