mascara ejemplos java swing datepicker swingx maskformatter

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