Problemas con JFormattedTextField
Publicado por Carlos (1 intervención) el 03/08/2009 22:17:04
Hola a todos, para mi aplicacion debo validar unas fechas pero si por ejemplo entro en un JFormattedTextField "32/12/2008" este lo acomoda a "01/01/2009", yo solo quiero que quede la fecha como se ingreso y marcar el error.
Codigo:
clase para la mascara:
import javax.swing.text.MaskFormatter;
public class AG_FormatoFecha extends MaskFormatter{
/** Para convertir Date a String y viceversa */
private SimpleDateFormat formato = null;
/** Construye la máscara con el patrón "##/##/####" */
public AG_FormatoFecha() throws ParseException
{
super("##/##/####");
formato = new SimpleDateFormat("dd/MM/yyyy");
setPlaceholderCharacter('_');
}
/**NOTA:: si habilito lo de abajo al presionar enter me acomoda la fecha
* Ejem: si pongo 32/12/2008 lo acomoda a 01/01/2009
*
* Convierte el String a Date.
* Esta clase es válida para un uso sencillo del JFormattedTextField. Para
* un uso más avanzado es necesario llamar al método de mismo nombre de
* la clase padre.
*/
public Object stringToValue(String text) throws ParseException
{
return formato.parseObject(text);
}
/**
* Convierte el Date a String.
* Esta clase es válida para un uso sencillo del JFormattedTextField. Para
* un uso más avanzado es necesario llamar al método del mismo nombre de
* la clase padre.
*/
public String valueToString(Object value) throws ParseException
{
if (value instanceof Date)
return formato.format((Date) value);
//return new String("");
//return formato.format(new Date());
return "__/__/____";
}
}
creo el JFormattedTextField de esta manera:
txtDateTo = new JFormattedTextField( new AG_FormatoFecha());
txtDateTo.setPreferredSize(dimTxtDate);
txtDateTo.setMaximumSize(dimTxtDate);
txtDateTo.setAlignmentX(0.5f);
txtDateTo.setBackground(txtColor);
Que estoy haciendo mal ??
Gracias de antemano.
Codigo:
clase para la mascara:
import javax.swing.text.MaskFormatter;
public class AG_FormatoFecha extends MaskFormatter{
/** Para convertir Date a String y viceversa */
private SimpleDateFormat formato = null;
/** Construye la máscara con el patrón "##/##/####" */
public AG_FormatoFecha() throws ParseException
{
super("##/##/####");
formato = new SimpleDateFormat("dd/MM/yyyy");
setPlaceholderCharacter('_');
}
/**NOTA:: si habilito lo de abajo al presionar enter me acomoda la fecha
* Ejem: si pongo 32/12/2008 lo acomoda a 01/01/2009
*
* Convierte el String a Date.
* Esta clase es válida para un uso sencillo del JFormattedTextField. Para
* un uso más avanzado es necesario llamar al método de mismo nombre de
* la clase padre.
*/
public Object stringToValue(String text) throws ParseException
{
return formato.parseObject(text);
}
/**
* Convierte el Date a String.
* Esta clase es válida para un uso sencillo del JFormattedTextField. Para
* un uso más avanzado es necesario llamar al método del mismo nombre de
* la clase padre.
*/
public String valueToString(Object value) throws ParseException
{
if (value instanceof Date)
return formato.format((Date) value);
//return new String("");
//return formato.format(new Date());
return "__/__/____";
}
}
creo el JFormattedTextField de esta manera:
txtDateTo = new JFormattedTextField( new AG_FormatoFecha());
txtDateTo.setPreferredSize(dimTxtDate);
txtDateTo.setMaximumSize(dimTxtDate);
txtDateTo.setAlignmentX(0.5f);
txtDateTo.setBackground(txtColor);
Que estoy haciendo mal ??
Gracias de antemano.
Valora esta pregunta


0