欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-17 09:40:58
复制代码 代码如下:import java.awt.*;import java.awt.event.*;import java.util.calendar; import...

复制代码 代码如下:

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

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

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