VALIDACIONES NUMEROS DECIMALES

Hola

Tengo un JDialog con un JTextField para ingresar números. Cuando pierde el foco del JtextField se acciona el public boolean esDecimal(String cad), para verificar si es un número decimal.

El problema que tengo es que la primera vez que valida, lo hace correcto ( por ejemplo con 3.14, dicen las variables, esDecimal o hayPunto que es true (correcto). Pero, sin cerrar el JDialog, marco 3 (no es decimal por carecer del punto y la parte decimal), las variables dicen lo mismo que es true, al igual que todas las siguientes. Es como si no regenerada las variables y tomara el dato del primer caso.

Aclaro que public boolean esDecimal(String cad), después llama a public void RellenaDigitos(int cuantosEntera, int cuantosDecimal), para accionar los JOption y mostrar las variables.

Por cierto las variables que guardan la parte entera y la parte decimal, no funcionan.

Paro el programa es:

String va10s = "";
String cad = "";
boolean hayPunto=false;
int NDigitos = 0;
int cuantosEntera = 0;
int cuantosDecimal = 0;
String enteros;
String decimal;
int posicionDelPunto=0;
StringBuffer parteEntera;
StringBuffer parteDecimal;
String parteEnteras;

public Prueba6(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
setLocationRelativeTo(null);
}

//Devuelve true si la cadena que llega tiene la sintaxis de un decimal
public boolean esDecimal(String cad){
NDigitos = 0;
NDigitos = cad.length();
//boolean hayPunto=false;
StringBuffer parteEntera = new StringBuffer();
StringBuffer parteDecimal = new StringBuffer();
int i=0;

for( i=0;i

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de adrianaaae

No entiendo

Para comenzar puedes poder tu codigo entre etiquetas <code> </code>

Lo que tiendo es que cada ves que escribes en el componente al perder el foco realiza tu validación
para saber si es decimal el valor ingresado.
Entonces tu comentas que la primera ves que escribes al dar clic en cualquier lugar(para perder el foco y desencadenar el evento  Focuslost donde llamas tu método de validación) se realiza la validación de forma correcta; pero al escribir por segunda ves y dar clic en otro componentes para perder de nuevo el foco entonces el valor nuevo es el mismo que el que ingresaste anteriormente no es así?
Tengo algunas sugerencias:

  • Podrias implementar Formatted Text Fields para no realizar tus validaciones manualmente;es más efectivo y fácil de utilizar; te dejo la liga Aquí
  • Antes de escribir u obtener datos también podrías limpiar las variables utilizadas(debido a que no añadiste el código no puedo saber si es ésta tu situación)
  • Podrías verificar si efectivamente la segunda ves se esta perdiendo el foco y se esta enviando el valor del campo al método de validacion

Te sugiero utilizar la primera opción( Formatted Text Fields) debido a que solo necesitarás implementar en tu proyecto.

Saludos.