Date Picker

Java Snippet

Date Picker - Swing

This is a simple date picker application, using swing components. Click on a date button to trigger a message box displaying the date clicked. Change this part of the code to capture the date into a variable, for later use in a program.

Click to see the applet version    

 

import java.util.*;
import java.text.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
class DatePickerSwing extends JFrame implements ActionListener
{
  private static JButton btns[] = new JButton[49];
  private static JButton btnNext = new JButton("Forward 1 Month >>>");
  private static JButton btnLast = new JButton("<<< Back 1 Month");
  private static JLabel lblMth = new JLabel();
  private static JLabel lblYr = new JLabel();
  private static Calendar cal = Calendar.getInstance();
  private static String months[] = {"January","February","March","April",
  "May","June","July","August","September","October","November","December"};
  private static int mth = 0;
  private static int yr = 0;
  SimpleDateFormat sdf = new SimpleDateFormat("EEEE, dd MMMM yyyy");
 
  public DatePickerSwing()
  {
    super("Date Picker");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container frame = getContentPane();
    frame.setLayout(new BorderLayout());
    setSize(400,500);
    mth = cal.get(cal.MONTH);
    yr = cal.get(cal.YEAR);
    JPanel top = new JPanel(new FlowLayout());
    top.add(lblMth);
    top.add(lblYr);
    JPanel mid = new JPanel(new GridLayout(7,7));
    String days[] = {"S","M","Tu","W","Th","F","S"};
    for(int i = 0; i < btns.length; i++)
    {
      btns[i] = new JButton();
      btns[i].setFont(new Font("Arial",Font.BOLD, 12));
      btns[i].setPreferredSize(new Dimension(50,50));
      if(i < 7)
      {
        btns[i].setText(days[i]);
      }
      else
      {
        btns[i].addActionListener(this);
        btns[i].setFont(new Font("Arial",Font.BOLD, 12));
      }
      mid.add(btns[i]);
    }
    btnNext.addActionListener(this);
    btnLast.addActionListener(this);
    JPanel bottom = new JPanel(new FlowLayout());
    bottom.add(btnLast);
    bottom.add(btnNext);
    frame.add(top,BorderLayout.NORTH);
    frame.add(mid,BorderLayout.CENTER);
    frame.add(bottom,BorderLayout.SOUTH);
    setDates();
    setLocation(300,200);
    pack();
    setContentPane(frame);
    setVisible(true);
  }
 
  private static void setDates()
  {
    for(int i = 7; i < btns.length; i++)
    {
      btns[i].setText("");
    }
    cal.set(yr,mth,1);
    lblMth.setText(months[cal.get(cal.MONTH)]);
    lblYr.setText(String.valueOf(cal.get(cal.YEAR)));
    int firstDay = cal.get(cal.DAY_OF_WEEK)-1+7;
    int ii = 1;
    for(int i = firstDay; i<firstDay+31; i++)
    {
      btns[i].setText(String.valueOf(ii));
      ii++;
      cal.add(cal.DATE,1);
      if(cal.get(cal.MONTH) != (1200 + mth)%12) break;
    }
  }
 
  public void actionPerformed(ActionEvent ae)
  {
    if(ae.getSource() == btnLast)
    {
      mth--;
      setDates();
    }
    else if(ae.getSource() == btnNext)
    {
      mth++;
      setDates();
    }
    else
    {
      for(int i = 7; i < btns.length; i++)
      {
        if(ae.getSource() == btns[i])
        {
          if(!btns[i].getText().equals(""))
          {
            Calendar cal2 = Calendar.getInstance();
            cal2.set(yr,mth,Integer.parseInt(btns[i].getText()));
            JOptionPane.showMessageDialog(null,"You selected " +
              sdf.format(cal2.getTime()));
          }
          break;
        }
      }
    }
  }
  public static void main(String args[]) {new DatePickerSwing();}
}


back    top    main page    vb snippets page      java snippets page     vbscript snippets page   email    Page last modified