package yz;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class DateChooserJButton extends JButton {
private DateChooser dateChooser = null;
private String preLabel = "";
private String originalText = null;
private SimpleDateFormat sdf = null;
public DateChooserJButton() {
this(getNowDate());
}
public DateChooserJButton(String dateString) {
this();
setText(getDefaultDateFormat(), dateString);
//保存原始是日期时间
initOriginalText(dateString);
}
public DateChooserJButton(SimpleDateFormat df, String dateString) {
this();
setText(df, dateString);
//记忆当前的日期格式化器
this.sdf = df;
//记忆原始日期时间
Date originalDate = null;
try {
originalDate = df.parse(dateString);
} catch (ParseException ex) {
originalDate = getNowDate();
}
initOriginalText(originalDate);
}
public DateChooserJButton(Date date) {
this("", date);
//记忆原始日期时间
initOriginalText(date);
}
public DateChooserJButton(String preLabel, Date date) {
if (preLabel != null) {
this.preLabel = preLabel;
}
setDate(date);
//记忆原始是日期时间
initOriginalText(date);
setBorder(null);
setCursor(new Cursor(Cursor.HAND_CURSOR));
super.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (dateChooser == null) {
dateChooser = new DateChooser(sdf);
}
Point p = getLocationOnScreen();
p.y = p.y + 30;
dateChooser.showDateChooser(p);
}
});
}
private static Date getNowDate() {
return Calendar.getInstance().getTime();
}
private static SimpleDateFormat getDefaultDateFormat() {
return new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
}
/**
* 得到当前使用的日期格式化器
* @return 日期格式化器
*/
public SimpleDateFormat getCurrentSimpleDateFormat(){
if(this.sdf != null){
return sdf;
}else{
return getDefaultDateFormat();
}
}
//保存原始是日期时间
private void initOriginalText(String dateString) {
this.originalText = dateString;
}
//保存原始是日期时间
private void initOriginalText(Date date) {
this.originalText = preLabel + getDefaultDateFormat().format(date);
}
/*