帮帮忙呗,就是个这个万年历加个图形用户界面
效果跟系统的万年历差不多就好拉
public class WanNianLi {
int year;//查找的年份
int month;//查找的月份
//计算所需查找月份距离1990年一月的天数,得到所需查找月份的一号是礼拜几
static public void Days(int _year,int _month) {
int days=0;//所需查找月份距离1990年一月的总天数天数
int beforeDays=0;//所需查找年份距离1990年一月的天数
int monthDays=0;//所需查找月份当月的天数
int week=0;//所需查找月份的一号是礼拜几 //计算得到所需查找年份距离1990年一月的天数
switch((_year-1990)%4)
{
case 0: {beforeDays=(_year-1990)/4*1461;break;}
case 1: {beforeDays=(_year-1990)/4*1461+365;break;}
case 2: {beforeDays=(_year-1990)/4*1461+730;break;}
case 3: {beforeDays=(_year-1990)/4*1461+1096;break;}
} //计算得到所需查找月份距离1990年一月的天数与所需查找月份当月的天数
switch(_month)
{
case 1: {days=0;monthDays=31;break;}
case 2: {days=31;monthDays=28;break;}
case 3: {days=31+28;monthDays=31;break;}
case 4: {days=31+28+31;monthDays=30;break;}
case 5: {days=31+28+31+30;monthDays=31;break;}
case 6: {days=31+28+31+30+31;monthDays=30;break;}
case 7: {days=31+28+31+30+31+30;monthDays=31;break;}
case 8: {days=31+28+31+30+31+30+31;monthDays=31;break;}
case 9: {days=31+28+31+30+31+30+31+31;monthDays=30;break;}
case 10: {days=31+28+31+30+31+30+31+31+30;monthDays=31;break;}
case 11: {days=31+28+31+30+31+30+31+31+30+31;monthDays=30;break;}
case 12: {days=31+28+31+30+31+30+31+31+30+31+30;monthDays=31;break;}
} //判断查找年份是否闰年
if((_year%4==0&&_year%100!=0)||(_year%400==0))
{
if(_month>2)days=days+1;//如果闰年且月份大于二月,总天数+1
if(_month==2)monthDays=monthDays+1;//如果闰年且月份等于二月,当月天数+1
}
days=days+beforeDays;//计算总天数
week=days%7;//计算所需查找月份的一号是礼拜几
getInfo(monthDays,week);//输出万年历
}
//输出万年历
static public void getInfo(int monthDays,int week) {
int a[]=new int[31];//月份的天数,初始化都有31天
int j=0;//判断换行(一周七天)
for(int i=0;i<31;i++) a[i]=i+1;//初始化月份
System.out.println(" 日 一 二 三 四 五 六");
if(week!=6) for(j=0;j<=week;j++) System.out.print(" ");//如果所需查找月份的一号不是礼拜天,就空出空位
for(int k=0;k<monthDays;k++)//开始输出日期
{
if(k<9)
System.out.print(" "+a[k]);
else if(k<monthDays)
System.out.print(" "+a[k]);
j++;
if(j==7)
{
System.out.println("");
j=0;
}
}
}
public static void main(String x[]){
int year=2011,month=1;//-----------------这里是改变查找条件的地方!!!!
Days(year,month);
}
}[email protected]
效果跟系统的万年历差不多就好拉
public class WanNianLi {
int year;//查找的年份
int month;//查找的月份
//计算所需查找月份距离1990年一月的天数,得到所需查找月份的一号是礼拜几
static public void Days(int _year,int _month) {
int days=0;//所需查找月份距离1990年一月的总天数天数
int beforeDays=0;//所需查找年份距离1990年一月的天数
int monthDays=0;//所需查找月份当月的天数
int week=0;//所需查找月份的一号是礼拜几 //计算得到所需查找年份距离1990年一月的天数
switch((_year-1990)%4)
{
case 0: {beforeDays=(_year-1990)/4*1461;break;}
case 1: {beforeDays=(_year-1990)/4*1461+365;break;}
case 2: {beforeDays=(_year-1990)/4*1461+730;break;}
case 3: {beforeDays=(_year-1990)/4*1461+1096;break;}
} //计算得到所需查找月份距离1990年一月的天数与所需查找月份当月的天数
switch(_month)
{
case 1: {days=0;monthDays=31;break;}
case 2: {days=31;monthDays=28;break;}
case 3: {days=31+28;monthDays=31;break;}
case 4: {days=31+28+31;monthDays=30;break;}
case 5: {days=31+28+31+30;monthDays=31;break;}
case 6: {days=31+28+31+30+31;monthDays=30;break;}
case 7: {days=31+28+31+30+31+30;monthDays=31;break;}
case 8: {days=31+28+31+30+31+30+31;monthDays=31;break;}
case 9: {days=31+28+31+30+31+30+31+31;monthDays=30;break;}
case 10: {days=31+28+31+30+31+30+31+31+30;monthDays=31;break;}
case 11: {days=31+28+31+30+31+30+31+31+30+31;monthDays=30;break;}
case 12: {days=31+28+31+30+31+30+31+31+30+31+30;monthDays=31;break;}
} //判断查找年份是否闰年
if((_year%4==0&&_year%100!=0)||(_year%400==0))
{
if(_month>2)days=days+1;//如果闰年且月份大于二月,总天数+1
if(_month==2)monthDays=monthDays+1;//如果闰年且月份等于二月,当月天数+1
}
days=days+beforeDays;//计算总天数
week=days%7;//计算所需查找月份的一号是礼拜几
getInfo(monthDays,week);//输出万年历
}
//输出万年历
static public void getInfo(int monthDays,int week) {
int a[]=new int[31];//月份的天数,初始化都有31天
int j=0;//判断换行(一周七天)
for(int i=0;i<31;i++) a[i]=i+1;//初始化月份
System.out.println(" 日 一 二 三 四 五 六");
if(week!=6) for(j=0;j<=week;j++) System.out.print(" ");//如果所需查找月份的一号不是礼拜天,就空出空位
for(int k=0;k<monthDays;k++)//开始输出日期
{
if(k<9)
System.out.print(" "+a[k]);
else if(k<monthDays)
System.out.print(" "+a[k]);
j++;
if(j==7)
{
System.out.println("");
j=0;
}
}
}
public static void main(String x[]){
int year=2011,month=1;//-----------------这里是改变查找条件的地方!!!!
Days(year,month);
}
}[email protected]
import java.awt.event.*;
import java.util.*;
class MainFrame extends JFrame
{
private static final long serialVersionUID = 4395459176419007992L;
JPanel panel=new JPanel(new BorderLayout());
JPanel panel1=new JPanel();
JPanel panel2=new JPanel(new GridLayout(7,7));
JPanel panel3=new JPanel();
JLabel []label=new JLabel[49];
JLabel y_label=new JLabel("年份");
JLabel m_label=new JLabel("月份");
JComboBox com1=new JComboBox();
JComboBox com2=new JComboBox();
JButton button=new JButton("查看");
JButton button2=new JButton("修改");
Date today = new Date();
JSpinner s = new JSpinner(new SpinnerDateModel(today, null, null, Calendar.MONTH));
JSpinner.DateEditor de = new JSpinner.DateEditor(s, "yyyy'年'MM'月'dd'日'HH:mm:ss");
int re_year,re_month;
int x_size,y_size;
String year_num;
Calendar now=Calendar.getInstance(); //实例化Calendar
MainFrame(){
super("万年历");
setSize(300,350);
x_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth());
y_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight());
setLocation((x_size-300)/2,(y_size-350)/2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1.add(y_label);
panel1.add(com1);
panel1.add(m_label);
panel1.add(com2);
panel1.add(button);
s.setEditor(de);
s.setEnabled(true);
panel3.add(s);
panel3.add(button2);
for(int i=0;i<49;i++){
label[i]=new JLabel("",JLabel.CENTER);//将显示的字符设置为居中
panel2.add(label[i]);
}
panel.add(panel1,BorderLayout.NORTH);
panel.add(panel2,BorderLayout.CENTER);
panel.add(panel3,BorderLayout.SOUTH);
panel.setBackground(Color.white);
panel1.setBackground(Color.white);
panel2.setBackground(Color.white);
panel3.setBackground(Color.WHITE);
Init();
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int c_year,c_month,c_week;
c_year=Integer.parseInt(com1.getSelectedItem().toString()); //得到当前所选年份
c_month=Integer.parseInt(com2.getSelectedItem().toString())-1; //得到当前月份,并减1,计算机中的月为0-11
c_week=use(c_year,c_month); //调用函数use,得到星期几
Resetday(c_week,c_year,c_month); //调用函数Resetday
}});
setContentPane(panel);
setVisible(true);
setResizable(false);
}
public void Init(){
int year,month_num,first_day_num;
String log[]={"日","一","二","三","四","五","六"};
for(int i=0;i<7;i++){
label[i].setText(log[i]);
}
for(int i=0;i<49;i=i+7){
label[i].setForeground(Color.red); //将星期日的日期设置为红色
}
for(int i=6;i<49;i=i+7){
label[i].setForeground(Color.green);//将星期六的日期设置为绿色
}
for(int i=1;i<10000;i++){
com1.addItem(""+i);
}
for(int i=1;i<13;i++){
com2.addItem(""+i);
}
month_num=(int)(now.get(Calendar.MONTH)); //得到当前时间的月份
year=(int)(now.get(Calendar.YEAR)); //得到当前时间的年份
com1.setSelectedIndex(year-1); //设置下拉列表显示为当前年
com2.setSelectedIndex(month_num); //设置下拉列表显示为当前月
first_day_num=use(year,month_num);
Resetday(first_day_num,year,month_num);
}
public int use(int reyear,int remonth){
int week_num;
now.set(reyear,remonth,1); //设置时间为所要查询的年月的第一天
week_num= (int)(now.get(Calendar.DAY_OF_WEEK));//得到第一天的星期
return week_num;
}
public void Resetday(int week_log,int year_log,int month_log){
int month_score_log; //判断是否是闰年的标记
int month_day_score; //存储月份的天数
int count;
month_score_log=0;
month_day_score=0;
count=1;
if(year_log%4==0&&year_log%100!=0||year_log%400==0){//判断是否为闰年
month_score_log=1;
}
month_log=month_log+1; //将传来的月份数加1
switch(month_log){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
month_day_score=31;
break;
case 4:
case 6:
case 9:
case 11:
month_day_score=30;
break;
case 2:
if(month_score_log==1){
month_day_score=29;
}
else{
month_day_score=28;
}
break;
}
for(int i=7;i<49;i++){ //初始化标签
label[i].setText("");
}
week_log=week_log+6; //将星期数加6,使显示正确
month_day_score=month_day_score+week_log;
for(int i=week_log;i<month_day_score;i++,count++){
label[i].setText(count+"");
}
}
public static void main(String [] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
MainFrame start=new MainFrame();
}
}
import java.util.Calendar;
import java.util.Date;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;/**
* 日期的选择控件,可以作为普通的组件使用,在构造函数中,必须传入一个该组件的所有者对象。 并且该对象只能是一个Frame对象或者一个JFrame对象。
* 使用方法如下: JFrame frame2 = new JFrame();
* frame2.getContentPane().setLayout(null); DateChooser date = new
* DateChooser(frame2); frame2.getContentPane().add(date); frame2.setSize(500,
* 400); frame2.setVisible(true); 组件的外观象一个combox,单击下拉按钮就可以对日期进行选择。 Title: 日期选择控件
* Copyright: Copyright (c) 2006 Company: Xaccp Date:2006年6月17日
*
* @author Tellixu(许天岭)
* @version 1.0
*/
public class DateChooser extends JPanel { private int width = 250; // 日期控件的宽度 private int height = 220; // 日期控件的高度 private GridBagLayout gridBagLayout1 = new GridBagLayout(); private JTextField dateField = new JTextField(); private DateChooserButton btnChoose = new DateChooserButton("◥"); // ▼是指:▼下拉箭头的unicode码 private String parten; private Container owner; private int length = 120; public DateChooser(Container owner, int length) {
this.owner = owner;
this.parten = "yyyy-MM-dd HH:mm";
this.length = length;
try {
init();
} catch (Exception ex) {
ex.printStackTrace();
}
} /**
* 根据一个所有者和一个日期的显示格式构造一个DateChooser对象。
*/
public DateChooser(Container owner, String partten, int length) {
this.owner = owner;
this.parten = partten;
this.length = length;
try {
init();
} catch (Exception ex) {
ex.printStackTrace();
}
} /**
* 根据一个所有者和一个日期的显示格式构造一个DateChooser对象。
*/
public DateChooser(Container owner, String partten) {
this.owner = owner;
this.parten = partten;
try {
init();
} catch (Exception ex) {
ex.printStackTrace();
} } /**
* 以缺省的partten构建DateChooser对象 日期选择框的所有者必须是Frame或者是JFrame对象。
*/
public DateChooser(Container owner) {
this.owner = owner;
this.parten = "yyyy-MM-dd";
try {
init();
} catch (Exception ex) {
ex.printStackTrace();
}
} /**
* 系统初始化
*
* @throws Exception
*/
private void init() throws Exception {
dateField.setToolTipText("单击右边的按钮即可选择日期");
btnChoose.setToolTipText("单击即可选择日期");
this.setLayout(gridBagLayout1);
dateField.setEditable(false);
btnChoose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DateChooser.this.btnChoose_actionPerformed(e);
}
});
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(parten);
this.setText(simpleDateFormat.format(date));
this.add(dateField, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(
0, 0, 0, 0), this.length, 0));
this.add(btnChoose, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(
0, 0, 0, 0), 0, 0));
}
public void setBtnChoose(boolean flag){
this.btnChoose.setEnabled(flag);
}
public void setToolTipText(String text) {
dateField.setToolTipText(text);
btnChoose.setToolTipText(text);
} /**
* 下拉按钮的事件处理
*
* @param e
* ActionEvent
*/
public void btnChoose_actionPerformed(ActionEvent e) {
java.awt.Rectangle r = dateField.getBounds();
Point pOnScreen = dateField.getLocationOnScreen(); Point result = new Point(pOnScreen.x, pOnScreen.y + r.height);
Point powner = owner.getLocation();
int offsetX = (pOnScreen.x + width) - (powner.x + owner.getWidth());
int offsetY = (pOnScreen.y + r.height + height)
- (powner.y + owner.getHeight()); if (offsetX > 0) {
result.x -= offsetX;
} if (offsetY > 0) {
result.y -= height + r.height;
} javax.swing.JDialog dateFrame = new javax.swing.JDialog();
dateFrame.setModal(false);
dateFrame.setUndecorated(true);
dateFrame.setLocation(result);
dateFrame.setSize(width, height); dateFrame.addWindowListener(new WindowAdapter() {
// 在任意的非日期选择区单击,则日期选择组件将变为非活动状态,自动释放资源。
public void windowDeactivated(WindowEvent e) {
javax.swing.JDialog f = (javax.swing.JDialog) e.getSource();
f.dispose();
}
});
DatePanel datePanel = new DatePanel(dateFrame, parten);
dateFrame.getContentPane().setLayout(new BorderLayout());
dateFrame.getContentPane().add(datePanel);
dateFrame.setVisible(true);
} /**
* 得到日期控件中的值
*
* @return String
*/
public String getText() {
return this.dateField.getText();
} /**
* 设置文本域的值
*
* @param text
* String
*/
public void setText(String text) {
this.dateField.setText(text);
} /**
* 该方法非常有用,是外部直接访问的TextField对象。
*
* @return JTextField
*/
public JTextField getDateField() {
return dateField;
} /**
* 内部类,日期选择控件的主体,封装了所有日期选择的内容,主要是一个Panel
*/
class DatePanel extends JPanel implements MouseListener, ChangeListener { int startYear = 1970; // 默认【最小】显示年份 int lastYear = 2050; // 默认【最大】显示年份 Color backGroundColor = Color.gray; // 底色 // 月历表格配色----------------//
Color palletTableColor = Color.white; // 日历表底色 Color weekFontColor = Color.blue; // 星期文字色 Color dateFontColor = Color.black; // 日期文字色 Color weekendFontColor = Color.red; // 周末文字色 Color moveButtonColor = Color.BLUE; // 鼠标移动的日历底色 Color todayBtnColor = Color.pink; // 今天的日历底色 // 控制条配色------------------//
Color controlLineColor = Color.pink; // 控制条底色 Color controlTextColor = Color.white; // 控制条标签文字色 JSpinner yearSpin; JSpinner monthSpin; JSpinner hourSpin;
JSpinner minuteSpin; JButton[][] daysButton = new JButton[6][7]; javax.swing.JDialog f; JPanel dayPanel = new JPanel(); // 日期panel JPanel yearPanel = new JPanel(); Calendar calendar = Calendar.getInstance(); String pattern; /**
* 日期选择控件放在了非模态对话框中
*/
public DatePanel(javax.swing.JDialog target, String pattern) {
super(); this.f = target;
this.pattern = pattern; setLayout(new BorderLayout());
setBorder(new LineBorder(backGroundColor, 2));
setBackground(backGroundColor);
initButton(); // 初始化放置日期的按钮。
createYearAndMonthPanal(); //
this.flushWeekAndDayPanal(calendar); // 之前必须先保证放置日期的按钮已经初始化。
this.setLayout(new BorderLayout());
this.add(yearPanel, BorderLayout.NORTH);
this.add(dayPanel, BorderLayout.CENTER);
} /**
* 日期选择控件的按钮初始化
*/
private void initButton() {
int actionCommandId = 1;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
JButton numberButton = new JButton();
numberButton.setBorder(BorderFactory.createEmptyBorder());
numberButton.setHorizontalAlignment(SwingConstants.CENTER);
numberButton.setActionCommand(String
.valueOf(actionCommandId)); numberButton.addMouseListener(this); numberButton.setBackground(palletTableColor);
numberButton.setForeground(dateFontColor);
numberButton.setText(String.valueOf(actionCommandId));
numberButton.setPreferredSize(new Dimension(25, 25));
daysButton[i][j] = numberButton;
actionCommandId++;
}
}
} private Date getNowDate() {
return Calendar.getInstance().getTime();
} private Calendar getNowCalendar() {
Calendar result = Calendar.getInstance();
return result;
} private Date getSelectDate() {
return calendar.getTime();
}
* 创建年月日的面板
*/
private void createYearAndMonthPanal() {
Calendar c = getNowCalendar();
int currentYear = c.get(Calendar.YEAR);
int currentMonth = c.get(Calendar.MONTH) + 1;
int currentHour = c.get(Calendar.HOUR_OF_DAY);
int cuurentMinute=c.get(Calendar.MINUTE);
yearSpin = new JSpinner(new javax.swing.SpinnerNumberModel(
currentYear, startYear, lastYear, 1));
monthSpin = new JSpinner(new javax.swing.SpinnerNumberModel(
currentMonth, 1, 12, 1));
hourSpin = new JSpinner(new javax.swing.SpinnerNumberModel(
currentHour, 0, 23, 1));
minuteSpin=new JSpinner(new javax.swing.SpinnerNumberModel(
cuurentMinute, 0, 59, 1)); yearPanel.setLayout(new java.awt.FlowLayout());
yearPanel.setBackground(controlLineColor); yearSpin.setPreferredSize(new Dimension(48, 20));
yearSpin.setName("Year");
yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####"));
yearSpin.addChangeListener(this);
yearPanel.add(yearSpin); JLabel yearLabel = new JLabel("年");
yearLabel.setForeground(controlTextColor);
yearPanel.add(yearLabel); monthSpin.setPreferredSize(new Dimension(35, 20));
monthSpin.setName("Month");
monthSpin.addChangeListener(this);
yearPanel.add(monthSpin); JLabel monthLabel = new JLabel("月");
monthLabel.setForeground(controlTextColor);
yearPanel.add(monthLabel); hourSpin.setPreferredSize(new Dimension(35, 20));
hourSpin.setName("Hour");
hourSpin.addChangeListener(this);
yearPanel.add(hourSpin); JLabel hourLabel = new JLabel("时");
hourLabel.setForeground(controlTextColor);
yearPanel.add(hourLabel);
minuteSpin.setPreferredSize(new Dimension(35, 20));
minuteSpin.setName("Minute");
minuteSpin.addChangeListener(this);
yearPanel.add(minuteSpin);
JLabel minuteLabel = new JLabel("分");
minuteLabel.setForeground(controlTextColor);
yearPanel.add(minuteLabel);
} /**
* 根据日期刷新显示面板
*/
private void flushWeekAndDayPanal(Calendar c) {
// c.set
c.set(Calendar.DAY_OF_MONTH, 1);
c.setFirstDayOfWeek(0);
int firstdayofWeek = c.get(Calendar.DAY_OF_WEEK);
int lastdayofWeek = c.getActualMaximum(Calendar.DAY_OF_MONTH);
String colname[] = { "日", "一", "二", "三", "四", "五", "六" };
int today = getNowCalendar().get(Calendar.DAY_OF_MONTH);
// 设置固定字体,以免调用环境改变影响界面美观
dayPanel.setFont(new java.awt.Font("宋体", java.awt.Font.PLAIN, 12));
dayPanel.setLayout(new GridBagLayout());
dayPanel.setBackground(Color.white); JLabel cell; for (int i = 0; i < 7; i++) {
cell = new JLabel(colname[i]);
cell.setHorizontalAlignment(JLabel.CENTER);
cell.setPreferredSize(new Dimension(25, 25));
if (i == 0 || i == 6) {
cell.setForeground(weekendFontColor);
} else {
cell.setForeground(weekFontColor);
}
dayPanel.add(cell, new GridBagConstraints(i, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 0, 0));
} int actionCommandId = 1;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) { JButton numberButton = daysButton[i][j];
actionCommandId = Integer.parseInt(numberButton
.getActionCommand());
if (actionCommandId == today) {
numberButton.setBackground(todayBtnColor);
}
if ((actionCommandId + firstdayofWeek - 2) % 7 == 6
|| (actionCommandId + firstdayofWeek - 2) % 7 == 0) {
numberButton.setForeground(weekendFontColor);
} else {
numberButton.setForeground(dateFontColor);
} if (actionCommandId <= lastdayofWeek) {
int y = 0;
if ((firstdayofWeek - 1) <= (j + firstdayofWeek - 1) % 7) {
y = i + 1;
} else {
y = i + 2;
}
dayPanel.add(numberButton, new GridBagConstraints((j
+ firstdayofWeek - 1) % 7, y, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 0, 0));
}
}
}
} private int getSelectedYear() {
return ((Integer) yearSpin.getValue()).intValue();
} private int getSelectedMonth() {
return ((Integer) monthSpin.getValue()).intValue();
} private int getSelectedHour() {
return ((Integer) hourSpin.getValue()).intValue();
}
private int getSelectedMinute(){
return ((Integer)minuteSpin.getValue()).intValue();
}
/**
* 年月小时的事件处理
*
* @param e
* ChangeEvent
*/
public void stateChanged(ChangeEvent e) {
JSpinner source = (JSpinner) e.getSource();
if (source.getName().equals("Minute")) {
calendar.set(Calendar.MINUTE, getSelectedMinute());
return;
}
if (source.getName().equals("Hour")) {
calendar.set(Calendar.HOUR_OF_DAY, getSelectedHour());
return;
}
if (source.getName().equals("Year")) { calendar.set(Calendar.YEAR, getSelectedYear());
dayPanel.removeAll();
this.flushWeekAndDayPanal(calendar);
dayPanel.revalidate();
dayPanel.updateUI();
return;
}
if (source.getName().equals("Month")) {
calendar.set(Calendar.MONTH, getSelectedMonth() - 1); dayPanel.removeAll();
this.flushWeekAndDayPanal(calendar);
dayPanel.revalidate();
dayPanel.updateUI();
return;
}
} /**
* 日期按钮的鼠标事件处理
*
* @param e
* MouseEvent
*/
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 1) {
JButton source = (JButton) e.getSource(); String value = source.getText();
int day = Integer.parseInt(value);
calendar.set(Calendar.DAY_OF_MONTH, day);
Date selectDate = this.getSelectDate();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
pattern);
DateChooser.this.setText(simpleDateFormat.format(selectDate)); int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
// System.out.println(year + "年" + month + "月" + day + "日");
f.dispose();
}
} public void mousePressed(MouseEvent e) {
// 空实现接口中的方法,不能删除
} public void mouseReleased(MouseEvent e) {
// 空实现接口中的方法,不能删除
} /**
* 鼠标移动到日历中的事件
*
* @param e
* MouseEvent
*/
public void mouseEntered(MouseEvent e) {
JButton jbutton = (JButton) e.getSource();
jbutton.setBackground(moveButtonColor); } /**
* 鼠标移出日历中的事件
*
* @param e
* MouseEvent
*/
public void mouseExited(MouseEvent e) {
JButton jbutton = (JButton) e.getSource();
int comm = Integer.parseInt(jbutton.getActionCommand());
int today = getNowCalendar().get(Calendar.DAY_OF_MONTH);
if (comm == today) {
jbutton.setBackground(todayBtnColor);
} else {
jbutton.setBackground(palletTableColor);
}
}
} /**
* 内部类,改变按钮的边框不可编辑区,使外观更加协调。
*/
class DateChooserButton extends JButton {
public DateChooserButton(String text) {
super(text);
} public Insets getInsets() {
return new Insets(4, 2, 0, 2);
} }
}
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;import javax.swing.JFrame;
import javax.swing.JPanel;import org.caveness.frame.WorkerFrame.CloseHandler;
import org.caveness.frame.timmer.DateChooser;public class TimmerTest extends JFrame{ private JPanel topPanel;
public TimmerTest(){
super();
init();
}
public void init(){
topPanel = new JPanel(new FlowLayout());
DateChooser dateCho=new DateChooser(this,20);
//dateCho.setBtnChoose(false); //设置时间按钮是否可用
topPanel.add(dateCho);
this.getContentPane().setLayout(new GridLayout(2,1));
this.add(topPanel);
this.setTitle("时间按钮测试");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);// 设置不可变大小
setSize(350, 300);
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
int height = this.getHeight();
int width = this.getWidth();
int positionX = (new Double(dimension.getWidth()).intValue() - width) / 2;
int positionY = (new Double(dimension.getHeight()).intValue() - height) / 2;
this.setLocation(positionX, positionY);
this.setVisible(true);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new TimmerTest();
}}