显示年月的java代码_日历显示读出输入的年月的java代码

该博客介绍了一个使用Java编写的日历应用,通过创建`CalendarBean`和`CalendarFrame`类来展示并操作日历。用户可以查看指定年月的日历,并通过按钮切换月份。此外,用户还能输入年份和月份,程序会更新日历视图。博客内容涵盖了Java Swing组件、日期处理和用户交互逻辑。
摘要由CSDN通过智能技术生成

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);    }  }); }}

431c9f7319ae0a0860e6dfbc055319a8.png

431c9f7319ae0a0860e6dfbc055319a8.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值