I got the JDatePicker
working, in my application, but want the date to be formatted as YYYY_MM_DD
Currently the date's format is the default Wed Jul 08 15:17:01 ADT 2015
From this guide there's a class that formats the date as follows.
package net.codejava.swing;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JFormattedTextField.AbstractFormatter;
public class DateLabelFormatter extends AbstractFormatter {
private String datePattern = "yyyy-MM-dd";
private SimpleDateFormat dateFormatter = new SimpleDateFormat(datePattern);
@Override
public Object stringToValue(String text) throws ParseException {
return dateFormatter.parseObject(text);
}
@Override
public String valueToString(Object value) throws ParseException {
if (value != null) {
Calendar cal = (Calendar) value;
return dateFormatter.format(cal.getTime());
}
return "";
}
}
So I added the class to my package and the Swing application has the proper constructor
JDatePickerImpl datePicker = new JDatePickerImpl(datePanel, new DateLabelFormatter());
So everytime I call datePicker.getModel().getValue().toString()
the formatting is the original.
Now I see the DateLabelFormatter calls valueToString
, but that method doesn't seem available in my application class.
Do I need to extend my application class?
Am I calling the wrong methods to get the information?
They're all in default package [not good?] is that causing problems ?
datePicker.getModel().getValue().toString()
? That's going to be callingDate.toString()
. The point of providing a label formatter is for the date picker itself to use it in the text box... that's the display value... where are you trying to use that code, and why? – Representational