简体   繁体   中英

Unwanted data using JDateChooser in JCalendar

I am using JDateChooser in JCalendar (with Swing). I am trying to get a format of "yyyy-MM-dd", but for some reason I get the time also and it's always the same(00:00:00 MDT). Anyone has an idea how to get rid of the time? Thanks in advance.

try {
    calendarDate = new JDateChooser();
} catch (Exception e) {
    e.printStackTrace();
}
calendarDate.setDateFormatString("yyyy-MM-dd");

dateLabel = new JLabel("Date");
parent.frame2.getContentPane().add(dateLabel);//1
parent.frame2.getContentPane().add(calendarDate);   

To get JDateChooser to show a specific date format, you need to set that specific format using its setDateFormatString API

Example :

JDateChooser myDateChooser = new JDateChooser();
myDateChooser.setDateFormatString("yyyy-MM-dd");

Are you already doing gthis ? Then you must post the place where you are getting value from the component.

And in the place where you handle property change of JDateChooser, you may do something like the following to get the date in same format :

Example: (assuming String dateString is where you want the date string)

myDateChooser.addPropertyChangeListener(new PropertyChangeListener() {

            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                if (evt.getPropertyName().equals("date")) {
                    dateString = new SimpleDateFormat("yyyy-MM-dd").format(myDateChooser.getDate());
                }
            }
        });

I'm use code source, not compiled file in the *.jar, then

calNewDate.setDateFormat(new SimpleDateFormat("dd.MM.yyyy"));
calNewDate.setSpiningCalendarField(Calendar.DAY_OF_MONTH);
calNewDate.setFont(new Font("SansSerif", Font.BOLD, 12));
calNewDate.setBackground(someColor);
calNewDate.addChangeListener(new ChangeListener() {

    @Override
    public void stateChanged(ChangeEvent e) {
       //some stuff
    }
});
calNewDate.setToolTipText("Whatever");

Please, make attention in formatting the stamp of the date in the JDateChososer textField. A common lexical mistake you can do is the following I supposed a addPropertyChangeListener behind the JDateChooser to catch the date user sets in input:

dateInserted.getDateEditor().addPropertyChangeListener(new PropertyChangeListener() {
            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                // TODO Auto-generated method stub
                if ("date".equals(evt.getPropertyName())) {
                    Date date = dateInserted.getDateEditor().getDate();
                    ordine.setOrderDate(date);
                    dateInserted.setDateFormatString("dd/MM/YYYY");
                    dateInserted.setDate(date);
                    System.out.println(date.toString());
                    dateInserted.setBorder(BorderFactory.createLineBorder(Color.GREEN));
if (canIenableCalcolaEAggiungi(2) == true)
                        calculatingAndAdding.setEnabled(true);
                    else {
                        calculatingAndAdding.setEnabled(false);
                    }
                }
            }
        });

In the script it has been wrongly written:

 dateInserted.setDateFormatString("dd/MM/YYYY");

When you choose the year's format pattern "YYYY" (instead of "yyyy" or "yy" cfr API) it is not recognized and generates a failure as follows: when you try editing the JDateChooser's textfield and you make a mouse step-off, the date automatically changed in a random value. It can't be changed anymore. That could generate an unwanted date as well.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM