java - ejemplos - ¿Cómo usar jXDatePicker con maskFormatter?
jformattedtextfield netbeans (2)
Me gustaría usar un jxdatepicker con maskFormatter. Lo intenté
MaskFormatter maskFormatter = new MaskFormatter ("##/##/####");
JFormattedTextField field=new JFormattedTextField (maskFormatter);
jXDatePicker.setEditor (field);
y
MaskFormatter maskFormatter = new MaskFormatter ("##/##/####");
maskFormatter.install (jXDatePicker.getEditor ());
Ni la primera ni la segunda solucion funcionaron.
PS: Un JFormattedTextField
funciona bien con MaskFormatter
Y jXDatePicker
funciona bien con un simple JFormattedTextField
Esta es una pregunta antigua, pero parece que todavía está activa, así que aquí es cómo implementamos la funcionalidad hace algún tiempo ( swingx-all-1.6.5-1.jar
):
1) Crear una clase de envoltorio para MaskFormatter
public class Wrapper extends MaskFormatter {
private final static String DD_MM_YYY = "dd/MM/yyyy";
public Wrapper(String string) throws ParseException {
super(string);
}
@Override
public Object stringToValue(String value) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat(DD_MM_YYY);
Date parsed = format.parse(value);
return parsed;
}
public String valueToString(Object value) throws ParseException {
if (value != null) {
SimpleDateFormat format = new SimpleDateFormat(DD_MM_YYY);
String formated = format.format((Date) value);
return super.valueToString(formated);
} else {
return super.valueToString(value);
}
}
}
2) Agregue el Formatter envuelto al JFormattedTextField
y JFormattedTextField
en el JXDatePicker
MaskFormatter maskFormatter;
JXDatePicker datePicker = new JXDatePicker();
try {
maskFormatter = new Wrapper("##/##/####");
JFormattedTextField field = new JFormattedTextField(maskFormatter);
datePicker.setEditor(field);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
somePanel.add(datePicker);
La clase contenedora básicamente realiza el formateo, ya que al intentar establecer un DateFormat
en el JXDatePicker
generaron varias ParseException
.
Personalmente, no soy muy hábil en Java pero después de revisar algunos documentos rápidamente. Creo que setEditor
no es el camino a seguir. Con maskFormatter.install
parece que vas en la dirección correcta. Algo como esto podría ayudarte:
JXDatePicker picker = new JXDatePicker();
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
picker.setFormats(format);
Fuente selectiva: JXDatePicker utilizando SimpleDateFormat para formatear dd.MM.yy a dd.MM.yyyy con el siglo actual
O vea esto: https://.com/a/9036979/4820655