时间:2021-05-19
复制代码 代码如下:
import java.awt.*;
import java.awt.event.*;
import java.util.Calendar;
import javax.swing.JOptionPane;
class CalendarBean { //定义一个日历类
String day[];//天数数组
int year = 2011, month = 9; //给定一个初始年月
public void setYear(int year) {
this.year = year;
}
public int getYear() {
return year;
}
public void setMonth(int month) {
this.month = month;
}
public int getMonth() {
return month;
}
public String[] getCalendar() { //获得日历
String a[] = new String[42]; //定义一个以字符串数组
Calendar 日历 = Calendar.getInstance();
日历.set(year, month - 1, 1);
int 星期几 = 日历.get(Calendar.DAY_OF_WEEK) - 1;
int day = 0;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
day = 31;
}
if (month == 4 || month == 6 || month == 9 || month == 11) {
day = 30;
}
if (month == 2) {
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
day = 29;
} else {
day = 28;
}
}
for (int i = 星期几, n = 1; i < 星期几 + day; i++) {
a[i] = String.valueOf(n);
n++;
}
return a;
}
}
class CalendarFrame extends Frame implements ActionListener {
Label labelDay[] = new Label[42]; //用来输出日历的天的数组
Button titleName[] = new Button[7]; //周一到周天的按键
String name[] = { "日", "一", "二", "三", "四", "五", "六" };
TextField text1, text2; //定义输入的年份和月份
Button nextMonth, previousMonth, Enter; //下个月,上个月,确定
Label lab1, lab2, lab3; //几个文本类型的字符串
int year = 2012, month = 9;
CalendarBean calendar; //顶一个量
Label showMessage = new Label("", Label.CENTER); // 定义一个用于显示 当前年月的label 表明,标签上应为中心。
public CalendarFrame() { //窗体类
Panel pCenter = new Panel(); //镶嵌
pCenter.setLayout(new GridLayout(7, 7));
for (int i = 0; i < 7; i++) { //给周日到周六的button添加显示文本
titleName[i] = new Button(name[i]);
pCenter.add(titleName[i]);
}
for (int i = 0; i < 42; i++) {
labelDay[i] = new Label("", Label.CENTER);
pCenter.add(labelDay[i]);
}
calendar = new CalendarBean();
calendar.setYear(year); //设定年
calendar.setMonth(month);
String day[] = calendar.getCalendar();//设定天
for (int i = 0; i < 42; i++) {//给日历位置循环添加显示日历天
labelDay[i].setText(day[i]);
}
lab1 = new Label("请输入日期"); //调用一个方法 new一个对象
lab2 = new Label("年份");
lab3 = new Label("月份");
Enter = new Button("确定");
text1 = new TextField(10);
text2 = new TextField(5);
nextMonth = new Button("下月");
previousMonth = new Button("上月");
Enter.addActionListener(this);//添加指定的动作侦听器
nextMonth.addActionListener(this);
previousMonth.addActionListener(this);
Panel pNorth = new Panel(), pSouth = new Panel();
pNorth.add(lab1);
pNorth.add(lab2);
pNorth.add(text1);
pNorth.add(lab3);
pNorth.add(text2);
pNorth.add(Enter);
pNorth.add(previousMonth);
pNorth.add(nextMonth);
pSouth.add(showMessage);
showMessage.setText("日历:" + calendar.getYear() + "年" + calendar.getMonth() + "月");
ScrollPane scrollPane = new ScrollPane(); //实现单个子组件的自动水平和/或垂直滚动的容器类
scrollPane.add(pCenter);
add(scrollPane, BorderLayout.CENTER);
add(pNorth, BorderLayout.NORTH);
add(pSouth, BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == nextMonth) { //如果获得的操作时下个月的
month = month + 1;
if (month > 12)
month = 1;
calendar.setMonth(month);
String day[] = calendar.getCalendar();
for (int i = 0; i < 42; i++) {
labelDay[i].setText(day[i]);
}
} else if (e.getSource() == previousMonth) {
month = month - 1;
if (month < 1)
month = 12;
calendar.setMonth(month);
String day[] = calendar.getCalendar();
for (int i = 0; i < 42; i++) {
labelDay[i].setText(day[i]);
}
} else {
String yea = text1.getText();
String mon = text2.getText();
try {
year = Integer.parseInt(yea); //把string转成int类型
month = Integer.parseInt(mon);
if (month > 12 || month < 1 || year < 1) { //错误输入的处理
JOptionPane.showMessageDialog(null, "请输入正确月份或月份");
return;
} else {
calendar.setYear(year);
calendar.setMonth(month);
}
String day[] = calendar.getCalendar();
for (int i = 0; i < 42; i++) {
labelDay[i].setText(day[i]);
}
} catch (NumberFormatException ee) {
JOptionPane.showMessageDialog(null, "请输入正确的年份及月份");
}
}
showMessage.setText("日历:" + calendar.getYear() + "年" + calendar.getMonth() + "月");
}
}
public class CalendarMainClass {
public static void main(String args[]) {
CalendarFrame frame = new CalendarFrame();
frame.setTitle("日历");
frame.setBounds(300, 200, 500, 300);
frame.setVisible(true); //显示窗口
frame.validate(); //使生效
frame.addWindowListener(new java.awt.event.WindowAdapter() { //点击叉号关闭frame程序
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
}
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了Java打印指定年月日历的具体代码,供大家参考,具体内容如下日历如下:程序如下://打印指定年月的日历publicclassPrintCal
本文实例为大家分享了java实现打印日历的具体代码,供大家参考,具体内容如下效果图代码:/***需要实现的目标:根据输入的年月打印出本月的日历表*说明:1900
本文实例为大家分享了java打印指定年月份日历的具体代码,供大家参考,具体内容如下做了一个小的日历打印,没有使用数组,所以不能对日期进行操作,用了单个for循环
本文实例讲述了Java实现按年月打印日历功能。分享给大家供大家参考,具体如下:importjava.text.ParseException;importjava
一、简介编写一个会动的日历,日历上面有年月日,周几,时分秒,效果如下:年月日,周几,时分秒都会随着系统时间的走动而改变二、代码Document*{margin: