Java - jFormattedTextField con fecha por defect y formato

 
Vista:

jFormattedTextField con fecha por defect y formato

Publicado por Ricardo (10 intervenciones) el 12/07/2007 23:47:11
Hola a todos, lo que necesito que un jFormattedTextField tenga la fecha actual por defecto y a su vez que no deje ingresar mas caracteres que los que soporta el formato (dd/MM/yyyy). La fecha por defecto no es problema, pero cuando alcontructor le paso el formato y el valor (la fecha actual) no me muestra nada. No se que es lo que puede ser, agrdezco su ayuda.

Salu2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:jFormattedTextField con fecha por defect y form

Publicado por ENARA (62 intervenciones) el 16/07/2007 01:06:04
Buenas,
Lo primero que se me ocurre es mirar si el formato de la fecha que introduces es el adecuado con la mascara que has puesto al jformattedtextfield.

La fecha enviasela con un String creado de esta manera por ejemplo:

Date hoy= new Date();
SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy");
String fecha = sdf.format(hoy);

Y en cuento al jformattedtextfield, podías poner la mascara así:

MaskFormatter mascara = null;
try {
mascara = new MaskFormatter("##/##/####");
} catch (ParseException ex) {
}
texto= new JFormattedTextField(mascara);
texto.setValue("");
try {
texto.commitEdit();
} catch (ParseException ex1) {
}

Para verificar que la fecha es correcta quizás exista algo que yo desconozco porque no sé mucho pero siempre puedes crear código para verficarlo. Te he preparado un método que te puede servir.

private boolean fechaCorrecta(String fecha){
if((fecha.substring(2,3)).compareTo("/")==0 && (fechaNac.substring(5,6)).compareTo("/")==0){
int año = Integer.parseInt(fecha.substring(6));
int mes = Integer.parseInt(fecha.substring(3,5));
int dia = Integer.parseInt(fechaNac.substring(0,2));
if (año > 1900) {
if (mes > 0 && mes < 13) {
int tope;
if (mes == 1 || mes == 3 || mes == 5 || mes == 7 ||
mes == 8 || mes == 10 || mes == 12) {
tope = 31;
} else if (mes == 2) {
if (año % 4 == 0) {
tope = 29; //es bisiesto
} else tope = 28;
} else tope = 30;
if (dia > 0 && dia < tope + 1) {
return true;
} else {
ControladorVentanaError cve = ControladorVentanaError.
obtControladorVentanaError();
cve.mostrar("La fecha no es correcta");
return false;
}
} else {
ControladorVentanaError cve = ControladorVentanaError.
obtControladorVentanaError();
cve.mostrar("La fecha no es correcta");
return false;
}
} else {
ControladorVentanaError cve = ControladorVentanaError.
obtControladorVentanaError();
cve.mostrar("La fecha no es correcta");
return false;
}
}
else{
ControladorVentanaError cve = ControladorVentanaError.
obtControladorVentanaError();
cve.mostrar("La fecha no es correcta");
return false;
}
}

Saludos,
Enara
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:jFormattedTextField con fecha por defect y form

Publicado por Ricardo (1 intervención) el 16/07/2007 13:13:03
Lo de la fecha por defecto anda de maravillas, pero para validar las fecha lo hago de esta manera que es mucho mas simple y lo dejo en manos de Java:

java.text.DateFormat df = java.text.DateFormat.getInstance();
try {
java.text.DateFormat formatter = java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT);
formatter.setLenient(false);
java.util.Date date = formatter.parse(stringFecha);
} catch (ParseException ex) {
javax.swing.JOptionPane mensaje = new javax.swing.JOptionPane();
mensaje.showMessageDialog(null, "La fecha ingresada no es valida", "Atención!!!", mensaje.ERROR_MESSAGE);
}

De esta forma si es una fecha correcta no hay problema de lo contrario se genera una excepcion. Muchas gracias me sirvio tu ayuda.

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar