The Calendar package provides a popup Calendar widget which is used when date entry is required. You may already have a custom date entry field and simply need to provide a call to the MDateSelector. My test harness triggers it on a right mouse click, the code fragment for do this is reproduced below.

    public void mouseReleased(MouseEvent e)
    {
        if (e.isPopupTrigger())
        {
            try
            {
                date = df.parse(getText());
            }
            catch(ParseException pe)
            {
                date = null;
            }

            MDateSelector popup;
            popup = new MDateSelector();
            if (minDate!=null)
                popup.setMinimum(minDate);
            if (maxDate!=null)
                popup.setMaximum(maxDate);

            Point p=e.getPoint();
            p.x+=getBounds(null).x;
            p.y+=getBounds(null).y;

            popup.setFirstDay(Calendar.MONDAY);
            popup.setForeground(Calendar.SATURDAY, Color.blue);
            popup.setForeground(Calendar.SUNDAY, Color.blue);
            popup.show(getParent(), p, date);

            date = popup.getValue(); 
            setText(date==null ? "" : shortFormatter.format(date));
            popup=null;
        }
    } 
The CalendarPanel component may also be used separately in any other context for example a appointment book application to assist in finding dates.