Validación de un Float en java con JTextField

Que tal ando un poco inspirado jejeje ahora ando publicando la validación de un campo de texto JTextField de java , he buscado y como lo mencione antes pero no encontré mucho en la red, aquí les pongo el código y una pequeña explicación:

Creamos un Clase yo le puse miKeyListenerFloat que extiende de KeyAdapter, quedaría de la siguiente manera:

public class miKeyListenerFloat extends KeyAdapter{

}
Bueno implementamos el método que necesitamos en esta caso es el "keyReleased":

public void keyReleased(KeyEvent arg0) {
}
Dentro de la clase declaramos una variable en la cual guardaremos la referencia del campo de texto que estamos validando, esto quedaría de la siguiente forma:

public class miKeyListenerFloat extends KeyAdapter{
javax.swing.JTextField txtVenta;
}

Bueno ahora creamos el constructor de nuestra clase el cual recibirá un JTexField como parámetro de entrada:

public class miKeyListenerFloat extends KeyAdapter{
javax.swing.JTextField txtVenta;

public miKeyListenerFloat(javax.swing.JTextField txtVenta){
this.txtVenta=txtVenta;
}
}

Bien es hora de hacer el método que validará nuestro campo de texto, de manera sencilla explicare sin meterme en profundidad:

Empecemos el funcionamiento del método es el siguiente, el método recibe como parametro una variable de tipo KeyEvent a la cual le denomine arg0, en la cual esta contenida la tecla que fué presionada.

Se guarda el texto contenido en el JTextField en una variable de tipo String, también se tienes que obtener la longitud de la cadena ya sabes para cuestión de ciclos y otras cosas jejeje, esto en una variable de tipo "int", ahora convertimos la cadena a un vector de caracteres en una variable de tipo "char[]" , en código seira de la siguiente manera:

String cadena=txtVenta.getText();
int longitud=cadena.length();
char[]tmpCadena= cadena.toCharArray();

ahora viene lo mejor, cuando llegue un arg.getKeyCode() de valor 46, nos indica que esta llegando un "." un punto decimal , entonces tenemos que tener una bandera para indicarnos que en la cadena ya hay un punto decimal, si ya hay un punto decimal entonces se borra el nuevo punto decimal y al final se borra el espacio en blanco con la función "trim()".

if((arg0.getKeyCode()==46)){
boolean flag=false;
cadena="";
for(int i=0;i<=(longitud-1);i++){

if(tmpCadena[i]=='.'&& flag==false){
flag=true;
}else if(tmpCadena[i]=='.'&& flag==true){
tmpCadena[i]=' ';
}
cadena=cadena+tmpCadena[i];
}
txtVenta.setText(cadena.trim());

}

el resto de el código es el mismo que el de la validación de enteros, aquí esta el código para completar todo:

else if((arg0.getKeyCode()<48) ||(arg0.getKeyCode()>57)){
tmpCadena[(longitud-1)]=' ';
cadena="";
for(int i=0;i<=(longitud-1);i++){

cadena=cadena+tmpCadena[i];
}
txtVenta.setText(cadena.trim());
}

Ahora toda la clase quedaría de la siguiente manera:

public class miKeyListenerFloat extends KeyAdapter{

javax.swing.JTextField txtVenta;

public miKeyListenerFloat(javax.swing.JTextField txtVenta){
this.txtVenta=txtVenta;
}


public void keyReleased(KeyEvent arg0) {
isFloat(arg0);
//System.out.println(""+arg0.getKeyCode());

}

private void isFloat(KeyEvent arg0){

String cadena=txtVenta.getText();
int longitud=cadena.length();
char[]tmpCadena= cadena.toCharArray();

if((arg0.getKeyCode()==46)){
boolean flag=false;
cadena="";
for(int i=0;i<=(longitud-1);i++){

if(tmpCadena[i]=='.'&& flag==false){
flag=true;
}else if(tmpCadena[i]=='.'&& flag==true){
tmpCadena[i]=' ';
}
cadena=cadena+tmpCadena[i];
}
txtVenta.setText(cadena.trim());

}else if((arg0.getKeyCode()<48) ||(arg0.getKeyCode()>57)){
tmpCadena[(longitud-1)]=' ';
cadena="";
for(int i=0;i<=(longitud-1);i++){

cadena=cadena+tmpCadena[i];
}
txtVenta.setText(cadena.trim());
}
}

}

Agregamos un keyListener a al JTexField esto seria así:

txtNombre.addKeyListener(new miKeyListenerFloat(txtNombre));

LISTOOO!!!!!..... ya esta todo listo para que puedas tener validado tu campo de texto.

Comentarios

Unknown ha dicho que…
como corregiste el error que aparece cuando presionas la tecla de retroceso? saludos...

Entradas populares