Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JDatePicker date formatting

Tags:

java

swing

swingx

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 ?

like image 953
guy_sensei Avatar asked Jul 07 '15 18:07

guy_sensei


2 Answers

http://www.codejava.net/java-se/swing/how-to-use-jdatepicker-to-display-calendar-component

Here might be a resource that can help

I believe you might need to call

datePicker.getJFormattedTextField().getText()
like image 53
Huang Chen Avatar answered Oct 19 '22 20:10

Huang Chen


You have to call

datePicker.getJFormattedTextField().getText()

to get the displayed value from the datePicker

like image 4
Madhan Avatar answered Oct 19 '22 19:10

Madhan