private static final Font smallFont = new Font("Dialog", Font.PLAIN, 10);
private static final Font largeFont = new Font("Dialog", Font.PLAIN, 12);
private static final Insets insets = new Insets(2, 2, 2, 2);
private static final Color highlight = new Color(255, 255, 204);
private static final Color white = new Color(255, 255, 255);
private static final Color gray = new Color(204, 204, 204);
private Component selectedDay = null;
private GregorianCalendar selectedDate = null;
private GregorianCalendar originalDate = null;
private boolean hideOnSelect = true;
private final JButton backButton = new JButton();
private final JLabel monthAndYear = new JLabel();
private final JButton forwardButton = new JButton();
private final JLabel[] dayHeadings = new JLabel[]{ new JLabel("日"), new JLabel("一"), new JLabel("二"), new JLabel("三"), new JLabel("四"), new JLabel("五"), new JLabel("六")};
private final JLabel[][] daysInMonth = new JLabel[][]{ {new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel()}, {new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel()}, {new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel()}, {new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel()}, {new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel()}, {new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel()} };
private final JButton todayButton = new JButton();
private final JButton cancelButton = new JButton();
public DatePicker() { super(); selectedDate = getToday(); init(); }
public DatePicker(final Date initialDate) { super(); if (null == initialDate) selectedDate = getToday(); else (selectedDate = new GregorianCalendar()).setTime(initialDate); originalDate = new GregorianCalendar( selectedDate.get(Calendar.YEAR), selectedDate.get(Calendar.MONTH), selectedDate.get(Calendar.DATE)); init(); }
public boolean isHideOnSelect() { return hideOnSelect; }
public void setHideOnSelect(final boolean hideOnSelect) { if (this.hideOnSelect != hideOnSelect) { this.hideOnSelect = hideOnSelect; initButtons(false); } }
public Date getDate() { if (null != selectedDate) return selectedDate.getTime(); return null; }
int x = startX; for (int ii = 0; ii < dayHeadings.length; ii++) { dayHeadings[ii].setOpaque(true); dayHeadings[ii].setBackground(Color.LIGHT_GRAY); dayHeadings[ii].setForeground(Color.WHITE); dayHeadings[ii].setHorizontalAlignment(JLabel.CENTER); add(dayHeadings[ii], new AbsoluteConstraints(x, 40, 21, 21)); x += 20; }
x = startX; int y = startY; for (int ii = 0; ii < daysInMonth.length; ii++) { for (int jj = 0; jj < daysInMonth[ii].length; jj++) { daysInMonth[ii][jj].setOpaque(true); daysInMonth[ii][jj].setBackground(white); daysInMonth[ii][jj].setFont(smallFont); daysInMonth[ii][jj].setHorizontalAlignment(JLabel.CENTER); daysInMonth[ii][jj].setText(""); daysInMonth[ii][jj].addMouseListener(new MouseAdapter() { public void mouseClicked(final MouseEvent evt) { onDayClicked(evt); } }); add(daysInMonth[ii][jj], new AbsoluteConstraints(x, y, 21, 21)); x += 20; } x = startX; y += 20; }
initButtons(true);
calculateCalendar(); }
private void initButtons(final boolean firstTime) { if (firstTime) { final Dimension buttonSize = new Dimension(68, 24); todayButton.setText("今天"); todayButton.setMargin(insets); todayButton.setMaximumSize(buttonSize); todayButton.setMinimumSize(buttonSize); todayButton.setPreferredSize(buttonSize); todayButton.setDefaultCapable(true); todayButton.setSelected(true); todayButton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent evt) { onToday(evt); } });