?? calendertrain.java
字號:
package xxglxt;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JDialog;
import javax.swing.JTextField;
/**
* @param 日歷程序
*/
public class CalenderTrain extends JDialog implements ActionListener {
//月份和年份的下列列表框
private JComboBox MonthBox = new JComboBox();
private JComboBox YearBox = new JComboBox();
//月份和年份的標簽
private JLabel YearLabel = new JLabel("年份:");
private JLabel MonthLabel = 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; //是否顯示今天的日期
//用一組按鈕顯示日期,一共7行7列,第一行為星期的名字
private JButton[] button_day = new JButton[42];
private final String[] week = {"日", "一", "二", "三", "四", "五", "六"};
private JButton[] button_week = new JButton[7];
private int month_int; //保存用戶選擇的月份
private String year_int = null; //保存用戶選擇的年份
//————————————————————————————————————————
private String month_int1;//保存最後的月份
private String year_int1=null;//保存用戶選擇的年份
private String day1;//保存用戶最後的日子
private JButton a;
private JTextField b;
//————————————————————————————————————————
public CalenderTrain(JButton a,JTextField b) {
super();
this.a=a;
this.b=b;
this.setTitle("選擇日期"); //設置標題
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);
//設定年份區間,為當前年份的過去50年到當前年份
for (int i = now_year - 50; i <= now_year; i++) {
YearBox.addItem(i + "");
}
//設定年分下拉列表為當前年份,當前年份處于第50項
YearBox.setSelectedIndex(50);
//設定月分區間,12個月
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(); //放置日期面板
//網格布局管理器,7行7列,網格之間水平和垂直方向上間隔均為5
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.black);
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]);
button_day[i].addActionListener(this);
}
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) - 1990;
Date firstDay = new Date(year_sel, month_int, 1);
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(firstDay);
int days = 0;
int day_week = 0;
if (month_int == 0 || 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 = firstDay.getDay();
int count = 1;
for (int i = day_week; i < day_week + days; count++, i++) {
if (i % 7 == 0 || i == 6 || i == 13 || i == 20 || i == 27 ||
i == 34 || i == 41) {
if (i == day_week + now_date.getDate() - 1) {
button_day[i].setForeground(Color.blue);
button_day[i].setText(count + "");
} else {
button_day[i].setForeground(Color.red);
button_day[i].setText(count + "");
}
} else {
if (i == day_week + now_date.getDate() - 1) {
button_day[i].setForeground(Color.blue);
button_day[i].setText(count + "");
} else {
button_day[i].setForeground(Color.black);
button_day[i].setText(count + "");
}
}
}
if (day_week == 0) {
for (int i = days; i < 42; i++) {
button_day[i].setText(" ");
}
} 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(50);
MonthBox.setSelectedIndex(now_month);
this.paintDay();
}
if(e.getActionCommand().equals(" ")==false&&e.getActionCommand().equals("查看")==false&&e.getActionCommand().equals("今天")==false){
month_int1= YearBox.getSelectedItem().toString()+"."+MonthBox.getSelectedItem().toString()+"."+e.getActionCommand();
System.out.println(month_int1);
a.setEnabled(true);
b.setText(month_int1);
dispose();
}
}
public String dataSelect(){
return month_int1;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -