java 打印万年历_怎么用java for循环打印万年历基础源代码

展开全部

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]; //定义一62616964757a686964616fe59b9ee7ad9431333262353965个数组用来存放日期

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

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

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

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

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.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() {

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) {

button_day[i].setForeground(Color.RED);

button_day[i].setText(count + "");

} else {

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) {

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

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

new CalenderTrain();//如果点击今天按钮,得到今天的日期

}

}

public static void main(String[] args) {

CalenderTrain ct = new CalenderTrain();

}

}

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值