源代码:

import java.awt.*; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.event.*; import java.util.*; //写于2011年5月10日,星期二!2011年,5月1日是星期日 public class Calender extends JFrame implements ActionListener,MouseListener { private JTextField[] jtf_day; private JLabel Status; private String year; private String month; private String day; private JComboBox jcb_year; private JComboBox jcb_month; private JButton UpMonthBt; private JButton NextMonthBt; public Calender() { Date date = new Date(); String[] str_datetime = date.toLocaleString().split(" "); String[] str_date = str_datetime[0].split("-"); year = str_date[0]; month = str_date[1]; day = str_date[2]; //System.out.println(year+" "+month); this.setTitle("日历(2011年—2022年)"); this.getContentPane().setLayout(new BorderLayout()); this.setBounds(100,100, 430, 500); JPanel UpPanel = new JPanel(); UpPanel.setLayout(new FlowLayout()); JLabel labeldata = new JLabel("日期:"); UpPanel.add(labeldata); String[] YearData = {"2011","2012","2013","2014","2015","2016","2017","2018","2019","2020","2021","2022"}; jcb_year = new JComboBox(); for(String str:YearData) { jcb_year.addItem(str); } jcb_year.setSelectedItem(year); jcb_year.addActionListener(this); UpPanel.add(jcb_year); JLabel labelyear = new JLabel("年"); UpPanel.add(labelyear); String[] MonthData = {"1","2","3","4","5","6","7","8","9","10","11","12"}; jcb_month = new JComboBox(); for(String str:MonthData) { jcb_month.addItem(str); } jcb_month.setSelectedItem(month); jcb_month.addActionListener(this); UpPanel.add(jcb_month); JLabel labelmonth = new JLabel("月"); UpPanel.add(labelmonth); UpMonthBt = new JButton("上月"); UpMonthBt.addActionListener(this); UpPanel.add(UpMonthBt); NextMonthBt = new JButton("下月"); NextMonthBt.addActionListener(this); UpPanel.add(NextMonthBt); this.getContentPane().add(UpPanel,BorderLayout.NORTH); JPanel CenterPanel = new JPanel(); CenterPanel.setLayout(new GridLayout(7,7)); JTextField[] jtf_week =new JTextField[7]; jtf_week[0] = new JTextField("日"); jtf_week[1] = new JTextField("一"); jtf_week[2] = new JTextField("二"); jtf_week[3] = new JTextField("三"); jtf_week[4] = new JTextField("四"); jtf_week[5] = new JTextField("五"); jtf_week[6] = new JTextField("六"); for(int i=0;i<7;i++) { jtf_week[i].setHorizontalAlignment(JTextField.CENTER); jtf_week[i].setEditable(false); //jtf_week[i].addActionListener(this); //jtf_week[i].addMouseListener(this); jtf_week[i].setBackground(Color.gray); CenterPanel.add(jtf_week[i]); } jtf_day = new JTextField[42]; for(int i=0;i<42;i++) { jtf_day[i]= new JTextField(); jtf_day[i].setEditable(false); jtf_day[i].setBackground(Color.WHITE); jtf_day[i].addMouseListener(this); CenterPanel.add(jtf_day[i]); } this.getContentPane().add(CenterPanel,BorderLayout.CENTER); JPanel DownPanel = new JPanel(); Status = new JLabel("日期:"+year+"年"+month+"月"+day+"日"); DownPanel.add(Status); this.getContentPane().add(DownPanel,BorderLayout.SOUTH); ChangeJtf(year,month); } private int CacalateDay(int yeartemp,int montemp) { int day=0; int step=-1; int[] mon = new int[12]; if(JudgeYear(yeartemp)) { mon[0]=31;mon[1]=29;mon[2]=31;mon[3]=30;mon[4]=31;mon[5]=30; mon[6]=31;mon[7]=31;mon[8]=30;mon[9]=31;mon[10]=30;mon[11]=31; }else { mon[0]=31;mon[1]=28;mon[2]=31;mon[3]=30;mon[4]=31;mon[5]=30; mon[6]=31;mon[7]=31;mon[8]=30;mon[9]=31;mon[10]=30;mon[11]=31; } if(yeartemp==2011&&montemp==1) { return 6; }else { int startyear = 2011; int startmonth = 1; while(yeartemp!=startyear||montemp!=startmonth) { day=day+mon[startmonth-1]; startmonth+=1; if(startmonth==13) { startmonth=1; startyear++; if(JudgeYear(startyear)) { mon[0]=31;mon[1]=29;mon[2]=31;mon[3]=30;mon[4]=31;mon[5]=30; mon[6]=31;mon[7]=31;mon[8]=30;mon[9]=31;mon[10]=30;mon[11]=31; }else { mon[0]=31;mon[1]=28;mon[2]=31;mon[3]=30;mon[4]=31;mon[5]=30; mon[6]=31;mon[7]=31;mon[8]=30;mon[9]=31;mon[10]=30;mon[11]=31; } } } } return day-1; } private void ChangeJtf(String y,String m) { int yeartemp = Integer.parseInt(y); int montemp = Integer.parseInt(m); if(yeartemp==2011&&montemp==1) { UpMonthBt.setEnabled(false); } if(yeartemp==2022&&montemp==12) { NextMonthBt.setEnabled(false); } int day = CacalateDay(yeartemp,montemp); int[] mon = new int[12]; if(JudgeYear(yeartemp)) { mon[0]=31;mon[1]=29;mon[2]=31;mon[3]=30;mon[4]=31;mon[5]=30; mon[6]=31;mon[7]=31;mon[8]=30;mon[9]=31;mon[10]=30;mon[11]=31; }else { mon[0]=31;mon[1]=28;mon[2]=31;mon[3]=30;mon[4]=31;mon[5]=30; mon[6]=31;mon[7]=31;mon[8]=30;mon[9]=31;mon[10]=30;mon[11]=31; } for(int i=0;i < day%7;i++) { //jtf_day[i].setBackground(Color.lightGray); jtf_day[i].setText(""); } for(int i = day%7,j=1;i < mon[montemp-1]+day%7;i++,j++) { jtf_day[i].setText(j+""); //jtf_day[i].setBackground(Color.WHITE); jtf_day[i].setHorizontalAlignment(JLabel.CENTER); } for(int i= mon[montemp-1]+day%7;i<42;i++) { //jtf_day[i].setBackground(Color.lightGray); jtf_day[i].setText(""); } } private void BtactionPerformed(ActionEvent e) { JButton bt = (JButton)e.getSource(); int montemp = Integer.parseInt(month); int yeartemp = Integer.parseInt(year); if(bt.getText()=="上月") { if(montemp==1) { yeartemp--; montemp=12; year = ""+yeartemp; jcb_year.setSelectedIndex(yeartemp-2011); } else { montemp--; } month = ""+montemp; jcb_month.setSelectedIndex(montemp-1); } if(bt.getText()=="下月") { if(montemp==12) { montemp=1; yeartemp++; year = ""+yeartemp; jcb_year.setSelectedIndex(yeartemp-2011); } else { montemp++; } month = ""+montemp; jcb_month.setSelectedIndex(montemp-1); } } private void JcbactionPerformed(ActionEvent e) { int y = 2011+jcb_year.getSelectedIndex(); int m = 1+jcb_month.getSelectedIndex(); year = y+""; month = m+""; } public void actionPerformed(ActionEvent e) { if((e.getSource()) instanceof JButton) { BtactionPerformed(e); }else if((e.getSource()) instanceof JComboBox) { JcbactionPerformed(e); } ChangeJtf(year,month); } private boolean JudgeYear(int year) { if(year%400==0||year%4==0&&year%100!=0) { return true; } else return false; } public void mousePressed(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e) { JTextField jtf = (JTextField)(e.getSource()); if(!jtf.getText().equals("")) { jtf.setBackground(Color.BLUE); String date = "日期:"+year+"年"+month+"月"+jtf.getText()+"日"; Status.setText(date); } // System.out.println(jtf.getText()); // System.out.println("flag"); } public void mouseExited(MouseEvent e) { JTextField jtf = (JTextField)(e.getSource()); if(!jtf.getText().equals("")) { jtf.setBackground(Color.WHITE); } } public static void main(String[] args) { Calender a = new Calender(); a.setVisible(true); } }

转载于:https://www.cnblogs.com/JPAORM/archive/2011/05/12/2510103.html

Java实现的日历(原创)相关推荐

  1. java记事本获取当前时间_calendar 用Java写的日历,有查询时间日期,还有记事本以及到点提醒功能。 Develop 238万源代码下载- www.pudn.com...

    文件名称: calendar下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 4465 KB 上传时间: 2013-06-30 下载次数: 3 提 供 者: 陈园园 ...

  2. Java课程设计-日历记事本

    #Java课程设计-日历记事本 ##日历记事本 要求:带有日程提醒功能的日历(数据库可采用Access.SQL Server或者MySQL). (1)显示信息:用户可以向前翻页查询前一个月的日期,也可 ...

  3. java怎么写桌面日历_基于java的桌面日历系统的设计与实现毕业设计论文最终版.doc...

    基于java的桌面日历系统的设计与实现毕业设计论文最终版 分类号_______________ 密级________________ UDC _______________ 学号_ ___ 毕业设计( ...

  4. java中的日历_Java中的日历功能

    java.util.calendar类提供Java中的日历功能.是一个抽象类,提供在特定时间点和一组日历字段(例如YEAR,MONTH,DAY_OF_MONTH,HOUR等)之间进行转换的方法,以及用 ...

  5. java课程设计日历_java课程设计日历记事本赵锐.doc

    java课程设计日历记事本赵锐.doc 2本科生课程设计课程名称JAVA程序设计课程设计题目日历记事本学号201440930252学生姓名赵锐所在专业2014计算机学院所在班级信工2班成绩课程设计时间 ...

  6. 利用Java输出电子日历

    /** 时间:2018-3-25* 目的:practice* 内容:利用Java输出电子日历* 使用Java技术实现电子日历,需求为从控制台输入年份与月份后,控制台输出该月的日历信息.* */ pac ...

  7. Java实现万年历/日历

    Java实现万年历/日历 问题:输入年份和月份,显示本月的日历(本日历是从1900年开始) 核心:1900年1月1日是星期一(计算到要显示的年月的总天数 --> (总天数+1)%7 --> ...

  8. java课程设计日历,java课程设计--日历

    java课程设计--日历 0 java 语言课程设计 学 院 指导教师 学 号 姓 名 班 级 1 目录 一.课程题目2 二.需求分析2 三.概要设计2 四.详细设计2 五.测试数据及运行结果8 六. ...

  9. java 打印当月日历_Java打印日历表

    今天来吐槽一下Java的Calendar类的使用问题,反正我是弄了半天. 首先是,遇到一个问题,输入年份和月份,需要打印这个月的日历,网上有不少代码,但我用了几个感觉都不是很靠谱. 然后经过一番探索, ...

最新文章

  1. 赠书:深入理解MySQL主从原理
  2. J20170524-hm
  3. 图像降噪算法——Variance Stabilizing Transform / Generalization Anscombe Transform算法
  4. 【bzoj3575】 Hnoi2014—道路堵塞
  5. 微调也重要:探究参数初始化、训练顺序和提前终止对结果的影响
  6. module_param 用于动态开启/关闭 驱动打印信息
  7. 未来计算机论文1500,致未来的自己作文1500字
  8. java调用jndi出错,Webshpere数据源错误:无法查找JNDI名称
  9. 新思科技与台积电开发基于N4P制程的最广泛IP核组合
  10. mysql几种语言_mysql的几种SQL语句
  11. mui ajax的值php怎样获取,MUI.ajax是怎么获取数据的
  12. 关于图像格式jpg、gif、png、svg、bmp、WebP的区别以及应用场景
  13. 【Verilog】一文了解verilog基础语法
  14. win10无法装载重装系统iso文件_Win10系统如何装载和弹出ISO镜像文件?
  15. Flutter开发之——getX-路由管理(04)
  16. 今日头条用户搜索“室内设计”显示的自媒体粉丝数量及分布情况统计(2020.1.8)
  17. 消息队列相关使用方式
  18. 在电脑上怎么做判断题打√或x_电脑基础知识竞赛试题
  19. 2021爱分析·云计算趋势报告——支撑数字化转型,企业云平台建设进入新阶段
  20. Win10系统如何将eclipse背景色改成豆沙绿

热门文章

  1. SVN回滚至某个版本
  2. Unity Inspector 给组件自动关联引用
  3. 动态加载并获取usercontrol生成的html
  4. 【Java从0到架构师】SpringMVC - RESTful
  5. 【数据库系统设计】SQL语言实验
  6. 50套可视化报表模板直接用,做报告不用愁了!快收藏
  7. 在一个html中使用另一个html数据,如何为某些HTML标签存储任意数据
  8. mysql5.5.48安装教程_Linux虚拟机下MySQL-server-5.5.48-1安装教程
  9. 删除华为电视鸿蒙系统,华为解决互联网电视痛点:鸿蒙系统首发设备欲屏蔽开机广告...
  10. 析砂性土层php泥浆护壁,砂卵石层钻探护壁工艺分析