📄 日历.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class 日历 extends JFrame implements ActionListener
{
private JComboBox MonthBox = new JComboBox();
private JComboBox YearBox = new JComboBox();//年份 月份下拉表
private JLabel MonthLabel = new JLabel("月份:");
private JLabel YearLabel = new JLabel("年份:");
private JButton button_ok = new JButton("察 看");
private JButton button_today = new JButton("今 天");
//获取今天的年月日
private Date now_date = new Date();
private int now_year = now_date.getYear() + 1900;
private int now_month = now_date.getMonth();
private boolean todayFlag = false;
private JButton[] button_day = new JButton[42];//7*7=42
private final String[] week = {"日","一","二","三","四","五","六"};
private JButton[] button_week = new JButton[7];
private String year_int = null;//保存用户选择的年份
private int month_int;//保存用户选择的月份
public 日历()
{
super();
this.setTitle("日 历 1.0___BY SYX");
this.init();
this.setLocation(500,300);
this.setResizable(false);
pack();
}
/*初始化*/
private void init()
{
Font font = new Font("Dialog",Font.BOLD,14);
YearLabel.setFont(font);
MonthLabel.setFont(font);
button_ok.setFont(font);
button_today.setFont(font);
//年份区间 前10年 后20年
for(int i = now_year - 10;i < now_year + 21; i++)
{
YearBox.addItem(i+"");
}
YearBox.setSelectedIndex(10);
for(int i = 1;i < 13; i++)
{
MonthBox.addItem(i+"");
}
MonthBox.setSelectedIndex(now_month);//设置当前月份为月份下拉表
//设置放下拉表框和控制按钮版面
JPanel panel_ym = new JPanel();
panel_ym.add(YearLabel);
panel_ym.add(YearBox);
panel_ym.add(MonthLabel);
panel_ym.add(MonthBox);
panel_ym.add(button_ok);
panel_ym.add(button_today);
button_ok.addActionListener(this);
button_today.addActionListener(this);
//设置放日期面板
JPanel panel_day = new JPanel();
panel_day.setLayout(new GridLayout(7,7,3,3));
for(int i = 0;i<7;i++)//+日期
{
button_week[i] =new JButton(" ");
button_week[i].setText(week[i]);
button_week[0].setForeground(Color.blue);
panel_day.add(button_week[i]);
}
button_week[0].setForeground(Color.red);
button_week[6].setForeground(Color.red);
for(int i = 0;i<42;i++)
{
button_day[i] =new JButton(" ");
panel_day.add(button_day[i]);
}
this.paintDay();//当前年月日
JPanel panel_main = new JPanel();
panel_main.setLayout(new BorderLayout());
panel_main.add(panel_day,BorderLayout.SOUTH);
panel_main.add(panel_ym,BorderLayout.NORTH);
getContentPane().add(panel_main);
}
private void paintDay()
{
if(todayFlag)
{
year_int = now_year + "";
month_int = now_month;
}
else
{
year_int = YearBox.getSelectedItem().toString();
month_int = MonthBox.getSelectedIndex();//被选序号
}
int year_sel = Integer.parseInt(year_int) - 1900;
Date firstDay = new Date(year_sel,month_int,1);//构造该月第一天
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(firstDay);
//根据 判断月份 设定DAY值
int days = 0;
int day_week = 0;
if(month_int ==0||month_int ==2||month_int ==4||month_int ==6||month_int ==7||month_int ==9||month_int ==11)
days = 31;
else if(month_int ==3||month_int ==5||month_int ==8||month_int ==10)
days = 30;
else if(cal.isLeapYear(year_sel))
days = 29;
else
days = 28;
/*绘制按钮,day_week为首按钮*/
day_week = firstDay.getDay();
int count = 1;
for(int i = day_week;i<day_week+days;count++,i++)
{
button_day[i].setText(count+"");
//设置颜色
if(i%7==0||i==6||i==13||i==20||i==27||i==34||i==41)
button_day[i].setForeground(Color.red);
else
button_day[i].setForeground(Color.black);
if((i==day_week+now_date.getDate() - 1)&&todayFlag == true)
button_day[i].setForeground(Color.blue);
}
if(day_week == 0)
for(int i = days;i<42;i++);
else
{
for(int i = 0;i<day_week;i++)
button_day[i].setText(" ");
for(int i = day_week+days;i<42;i++)
button_day[i].setText(" ");
}
}
//事件处理
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == button_ok)
{
todayFlag = false;
this.paintDay();
}else if(e.getSource() == button_today)
{
todayFlag = true;
YearBox.setSelectedIndex(10);
MonthBox.setSelectedIndex(now_month);
this.paintDay();
}
}
public static void main(String args[])
{
日历 r = new 日历();
r.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(1);
}
});
r.setVisible(true);
r.show();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -