JDatePicker date formatting
Asked Answered
C

2

5

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 ?

Caliginous answered 7/7, 2015 at 18:52 Comment(2)
Why are you calling datePicker.getModel().getValue().toString()? That's going to be calling Date.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
The method stringToValue() shoudl return a Calendar and not a Date, see my answer @ #35265174.Sidnee
F
7

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()
Figurate answered 7/7, 2015 at 19:39 Comment(0)
W
4

You have to call

datePicker.getJFormattedTextField().getText()

to get the displayed value from the datePicker

Wichern answered 7/7, 2015 at 19:20 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.