Obtaining date from JDateChooser and displaying it in JTextField

Freddy picture Freddy · Feb 7, 2015 · Viewed 24.9k times · Source

I have constructed the following JDateChooser:

availFromDate = new JDateChooser();
availFromDate.setDateFormatString("dd/MM/yyyy");
JTextFieldDateEditor dateEditor = (JTextFieldDateEditor)availFromDate.getComponent(1);
dateEditor.setHorizontalAlignment(JTextField.RIGHT);
availFromDate.setSize(new Dimension(50, 0));
availFromDate.add(availablefromT);
calendarP.add(availFromDate);
contentPane.add(calendarP);
frame1.add(contentPane);
frame1.setVisible(true);

However, I need the date selected from the JDateChooser to appear in the JTextField it is being held in. I realise there must be a getDate() method involved, though I am not sure how to implement it.

How do I obtain the date and display it within the textfield in the format of dd/MM/yyyy?

Edit:

I have tried the following after seeing suggestions:

  SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
  String date = sdf.format(availFromDate.getDate());
  availablefromT.setText(date);

Though, now I am getting a NullPointerException. Anyone know why? It seems to concern this: String date = sdf.format(availFromDate.getDate());

The Error(s):

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.util.Calendar.setTime(Calendar.java:1770)
    at java.text.SimpleDateFormat.format(SimpleDateFormat.java:943)
    at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)
    at java.text.DateFormat.format(DateFormat.java:345)
    at Controller.makeCustEnquiryGUI(Controller.java:2061)

Example:

import com.toedter.calendar.JDateChooser;
import com.toedter.calendar.JTextFieldDateEditor;
import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import javax.swing.*;
import java.util.*;

public class CalendarTest {

    private JFrame chooseCruiseFrame;
    private JDateChooser availFromDate;
    private JTextField availablefromT;
    private JPanel contentPane;
    private JPanel centerP;

    public static void main(String[] args) {
        new CalendarTest();
    }

    public CalendarTest() {

        //////////// Creating Frame
        chooseCruiseFrame = new JFrame("");
        chooseCruiseFrame.setSize(300, 200);
        chooseCruiseFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        chooseCruiseFrame.setVisible(true);

        //////////// Creating contentPane
        contentPane = new JPanel(new GridLayout(0, 1));
        contentPane.setBackground(new java.awt.Color(255, 255, 255));
        chooseCruiseFrame.add(contentPane);
        chooseCruiseFrame.setVisible(true);

        //////////// Creating CenterP
        centerP = new JPanel();
        centerP.setBackground(new java.awt.Color(255, 255, 255));
        contentPane.add(centerP);
        chooseCruiseFrame.add(contentPane);
        chooseCruiseFrame.setVisible(true);

        // Available From Calendar
        JLabel availF = new JLabel("Available From:");
        centerP.add(availF);
        contentPane.add(centerP);
        availablefromT = new JTextField(11);
        centerP.add(availablefromT);
        contentPane.add(centerP);
        chooseCruiseFrame.add(contentPane);
        chooseCruiseFrame.setVisible(true);

        availFromDate = new JDateChooser();
        JTextFieldDateEditor dateEditor = (JTextFieldDateEditor) availFromDate.getComponent(1);
        dateEditor.setHorizontalAlignment(JTextField.RIGHT);
        availFromDate.add(availablefromT);
        centerP.add(availFromDate);
        contentPane.add(centerP);
        chooseCruiseFrame.add(contentPane);
        chooseCruiseFrame.setVisible(true);

        // Converting Date to String
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
        String date = sdf.format(availFromDate.getDate());
        availablefromT.setText(date);
    }
}

Answer

Fernando picture Fernando · Feb 12, 2015

the same code works here

   //button    

        private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        DateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
        String date = fmt.format(this.txt_data_ini.getDate()); //jdatechooser
        this.teste.setText(date);

    }