加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 19:57:32 所属栏目:Java 来源:网络整理
导读:复制代码 代码如下: 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 vo

复制代码 代码如下:

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对日期Date类进行加减运算、年份加减月份加减、时间差等等
  • Java输出系统当前的日期(年月日时分秒毫秒)
  • Java获取时间年、月、日的方法
  • java实现日历(某年的日历,某月的日历)用户完全自定义
  • java 输入某年某月某日,判断这一天是这一年的第几天
  • Java实现“年-月-日 上午/下午时:分:秒”的简单代码
  • java万年历,获取该年月日历表
  • java 获取日期的几天前,几个月前和几年前的实例
  • Java中的Calendar日历API用法完全解析
  • JavaWeb项目FullCalendar日历插件使用的示例代码
  • Java实现按年月打印日历功能【基于Calendar】

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读