Search code examples
javajtablejdatechooser

How to use com.toedter.calendar.JDateChooser?


I'm using com.toedter.calendar.JDateChooser to search between two dates so I've two jDateChooser components.
jDateChooser1 and jDateChooser2 I want retrieve record after select date from second jDateChooser2 in jTable

I tried write code in constructor it doesn't compile cause empty
String from = jDateChooser1.getDate(); gets null

I can use jButton to search records but I want it on jDateChooser event.

To check if it is working I tried

private void jDateChooser1MouseClicked(java.awt.event.MouseEvent evt){                                           
    jLabel1.setText(String.valueOf(jDateChooser1.getDate()));

} 

and

private void jDateChooser1MouseReleased(java.awt.event.MouseEvent evt){                                                                
    jLabel1.setText(String.valueOf(jDateChooser1.getDate()));

}

But it doesn't working either with
jDateChooser1MouseReleased(java.awt.event.MouseEvent evt)
or
jDateChooser1MouseClicked(java.awt.event.MouseEvent evt)

It's working with jButton as I mentioned above but I don't want to use:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    jLabel1.setText(String.valueOf(jDateChooser1.getDate()));
    //Working 
}  

So my previous title was "How implement event for com.toedter.calendar.JDateChooser?"
So now my question is more clear to understand.
Thank you.


Solution

  • You can register a listener using dateChooser.getDateEditor().addPropertyChangeListener(). Then listen for changes in property "date". Try below sample code.

    import com.toedter.calendar.JDateChooser;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import java.awt.GridLayout;
    import java.beans.PropertyChangeEvent;
    import java.beans.PropertyChangeListener;
    
    public class JDateChooserSample
    {
      public static void main(String[] args)
      {
        JLabel label = new JLabel("No date");
    
        JDateChooser dateChooser = new JDateChooser();
        dateChooser.getDateEditor().addPropertyChangeListener(new PropertyChangeListener()
        {
          @Override
          public void propertyChange(PropertyChangeEvent evt)
          {
            if (evt.getPropertyName().equals("date"))
            {
              label.setText(String.valueOf(dateChooser.getDate()));
            }
          }
        });
    
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().setLayout(new GridLayout(2, 1));
        f.getContentPane().add(dateChooser);
        f.getContentPane().add(label);
        f.setBounds(300, 200, 400, 300);
        f.setVisible(true);
      }
    }