package kobe.util;
import javax.swing.*;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Date;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.event.*;
/**
* 日期时间选择对话框,模仿Windows日期和时间属性对话框
* @see #showDialog(java.awt.Component, String, java.util.Calendar)
*/
public class JDateChooser extends JPanel implements ChangeListener, ItemListener {
private JComboBox month = new JComboBox(new String[]{"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"});
private JSpinner year = new JSpinner(new SpinnerNumberModel(1, 1, 9999, 1));
private DateGrid dateGrid = new DateGrid();
private JSpinner time = new JSpinner(new SpinnerDateModel());
public JDateChooser(Calendar initialDate) {
this.setBackground(Color.white);
this.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5));
this.setLayout(new GridLayout(1, 2, 5, 10));
JPanel p1 = new JPanel();
p1.setBackground(Color.white);
p1.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("日期"), BorderFactory.createEmptyBorder(5, 5, 10, 5)));
p1.setLayout(new BorderLayout(10, 10));
JPanel p11 = new JPanel(new GridLayout(1, 2, 10, 10));
p11.setBackground(Color.white);
p11.add(month);
month.addItemListener(this);
month.setPreferredSize(new Dimension(0, 20));
p11.add(year);
year.setEditor(new JSpinner.NumberEditor(year, "0"));
year.addChangeListener(this);
year.setPreferredSize(new Dimension(0, 20));
p1.add(p11, BorderLayout.NORTH);
p1.add(dateGrid);
this.add(p1);
JPanel p2 = new JPanel(new BorderLayout(10, 10));
p2.setBackground(Color.white);
p2.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("时间"), BorderFactory.createEmptyBorder(0, 10, 10, 10)));
time.setPreferredSize(new Dimension(0, 20));
JSpinner.DateEditor editor = new JSpinner.DateEditor(time, "HH:mm:ss");
editor.getTextField().setHorizontalAlignment(JTextField.RIGHT);
time.setEditor(editor);
JPanel p = new JPanel();
p.setBackground(Color.white);
time.setPreferredSize(new Dimension(100, 20));
p.add(time);
p2.add(p, BorderLayout.SOUTH);
p2.add(new Clock(time));
this.add(p2);
setCalendar(initialDate);
setPreferredSize(new Dimension(369, 200));
}
/**
* 设置日期和时间
* @param calendar 日期和时间
*/
public void setCalendar(Calendar calendar) {
if(calendar==null) calendar = new GregorianCalendar();
month.setSelectedIndex(calendar.get(Calendar.MONTH));
year.s