分享
 
 
 

JAVA简单的日历程序

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

/**以下是日历的代码程序

有疑问 回信 ycj@18e.net

**/

//CalenderTrain.Java

package com.swing;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

public class CalenderTrain extends JFrame implements ActionListener {

JComboBox Month = new JComboBox(); //月份下拉列表框

JComboBox Year = new JComboBox(); //年份下拉列表框

JLabel Year_l = new JLabel("Year::"); //定义标签

JLabel Month_l = new JLabel("Month::"); //定义标签

Date now_date = new Date(); //获取今天的日期

JButton[] button_day = new JButton[49]; //定义一个数组用来存放日期

JButton button_ok = new JButton("确定"); //现实选择日期

JButton button_today = new JButton("今天"); //显示今天按钮

int now_year = now_date.getYear() + 1900; //获取年份值

int now_month = now_date.getMonth(); //获取月份值(当前月份-1)

boolean bool = false;

String year_int = null; //存放年份

int month_int; //存放月份

JPanel pane_ym = new JPanel(); //放置下拉列表框和控制按钮面板

JPanel pane_day = new JPanel(); //放置日期面板

JPanel pane_parent = new JPanel(); //放置以上两个面板

//定义方法绘制面板

public CalenderTrain() {

super("Calender!"); //设定面板得title

//---以下几行使得关闭面板时退出程序

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

addWindowListener(new WindowAdapter() {

public void windowClose(WindowEvent e) {

System.out.print("CLOSING THE WIN");

System.exit(0);

}

});

//---

setResizable(false); //面板的大小不能变化

//设定年月

/*年份的区间是当前年份的过去10年到当前年份的未来20年

* 月份正常1??12月

*/

for (int i = now_year - 10; i <= now_year + 20; i++) {

Year.addItem(i + "");

}

for (int i = 1; i < 13; i++) {

Month.addItem(i + "");

}

Year.setSelectedIndex(10); //设定年份下拉列表为当前年份

pane_ym.add(Year_l); //添加年份标签

pane_ym.add(Year); //添加年份下拉列表框

Month.setSelectedIndex(now_month); //设定月份下拉列表为当前月份

pane_ym.add(Month_l); //添加月份标签

pane_ym.add(Month); //添加月份下拉列表框

pane_ym.add(button_ok); //添加确定按钮

pane_ym.add(button_today); //添加“今天”按钮

button_ok.addActionListener(this); //确定按钮添加监听事件

button_today.addActionListener(this); //“今天”按钮添加监听事件

//年月设定结束

//初始化日期按钮并绘制

pane_day.setLayout(new GridLayout(7, 7, 10, 10));

for (int i = 0; i < 49; i++) {

button_day[i] = new JButton(" ");

pane_day.add(button_day[i]);

}

this.setDay(); //调用setDay()方法

pane_parent.setLayout(new BorderLayout()); //设定布局治理器

setContentPane(pane_day);

setContentPane(pane_ym);

pane_parent.add(pane_day, BorderLayout.SOUTH);

pane_parent.add(pane_ym, BorderLayout.NORTH);

setContentPane(pane_parent);

pack();

show();

}

void setDay() {

if (bool) {

year_int = now_year + "";

month_int = now_month;

} else {

year_int = Year.getSelectedItem().toString();

month_int = Month.getSelectedIndex();

}

int year_sel = Integer.parseInt(year_int) - 1900; //获得年份值

Date dt = new Date(year_sel, month_int, 1); //构造一个日期

GregorianCalendar cal = new GregorianCalendar(); //创建一个Calendar实例

cal.setTime(dt);

String week[] = { "Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat" };

int day = 0; //day中存放某个月份的天数

int day_week = 0; //用来存放某个月的第一天是星期几的数值

//--将星期添加到前7个按钮中

for (int i = 0; i < 7; i++) {

button_day[i].setText(week[i]);

}

//--

/*判定是几月份,根据它来设定day的值

* 其中二月份要判定是否是闰年

*/

if (month_int == 0

month_int == 2

month_int == 4

month_int == 6

month_int == 7

month_int == 9

month_int == 11) {

day = 31;

} else if (

month_int == 3

month_int == 5

month_int == 8

month_int == 10) {

day = 30;

} else {

if (cal.isLeapYear(year_sel)) {

day = 29;

} else {

day = 28;

}

}

day_week = 7 + dt.getDay();

int count = 1;

/*绘制按钮

* 在这里我们首先要根据选定的月份的第一天是星期几来确定我们绘制按钮的起始位置

* 其中day_week就是我们要绘制的起始位置

* 对于那些没有数值可以显示的按钮要置空

*/

for (int i = day_week; i < day_week + day; count++, i++) {

if (i % 7 == 0

i == 13

i == 20

i == 27

i == 48

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 = day; i < 49; i++) {

button_day[i].setText(" ");

}

} else {

//第一天前面的按钮置空

for (int i = 7; i < day_week; i++) {

button_day[i].setText(" ");

} //最后一天后面的按钮置空

for (int i = day_week + day; i < 49; i++) {

button_day[i].setText(" ");

}

}

}

public void actionPerformed(ActionEvent e) {

if (e.getSource() == button_ok) {

bool = false;

this.setDay(); //假如点击确定按钮就调用setDay()重新方法绘制按钮

} else if (e.getSource() == button_today) {

bool = true;

Year.setSelectedIndex(10);

Month.setSelectedIndex(now_month);

this.setDay(); //假如点击今天按钮,得到今天的日期

}

}

public static void main(String[] args) {

CalenderTrain ct = new CalenderTrain();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有