`
性格决定命运-专注成就人生
  • 浏览: 18082 次
社区版块
存档分类
最新评论

日历-Java

阅读更多
package com.demo.yongjian;
import java.awt.BorderLayout;
public class CalenderTrain extends JFrame implements ActionListener
{
//月份和年份的下拉列表框
private JComboBox MonthBox=new JComboBox();
private JComboBox YearBox=new JComboBox();
//月份和年份的标签
private JLabel YearLabel=new JLabel("年份:");
private JLabel MonthLabel=new JLabel("月份:");
//“查看”和“今天”两个按钮
private JButton button_ok=new JButton("查看");
private JButton button_today=new JButton("今天");
//获取今天的日期、年份、月份
private Date now_date=new Date();
private int now_year=now_date.getYear()+1900;
private int now_month=now_date.getMonth();
private boolean todayFlag=false;//是否显示今天的日期
//用一组按钮显示日期,一共7行7列,第一行为星期的名字
private JButton[] button_day=new JButton[42];
private final String[] week={"日","一","二","三","四","五","六"};
private JButton[] button_week=new JButton[7];
private String year_int=null;//保存用户选择的年份
private int month_int;//保存用户选择的月份
//构造函数
public CalenderTrain()
{
   super();
   this.setTitle("日历");//设置标题
   this.init();
   this.setLocation(500,300);
   this.setResizable(false);//设置面板的大小不能变化
   pack();
}
//初始化
private void init()
{
   Font font=new Font("Dialog",Font.BOLD,14);
   YearLabel.setFont(font);
   MonthLabel.setFont(font);
   button_today.setFont(font);
   //设定年份区间,为当前年份的过去10年到当前年份的未来20年
   for(int i=now_year-10;i<=now_year+20;i++)
   {
    YearBox.addItem(i+"");
   }
   //设定月份区间,12个月
   for(int i=1;i<13;i++)
   {
    MonthBox.addItem(i+"");
   }
   //设定月份下拉列表为当前月份
   MonthBox.setSelectedIndex(now_month);
   //放置下拉列表框和控制按钮的面板
   JPanel panel_ym=new JPanel();
   panel_ym.add(YearLabel);
   panel_ym.add(YearBox);
   panel_ym.add(MonthLabel);
   panel_ym.add(MonthBox);
   panel_ym.add(button_ok);
   panel_ym.add(button_today);
   //为两个按钮添加事件侦听器
   button_ok.addActionListener(this);
   button_today.addActionListener(this);
   JPanel panel_day=new JPanel();//放置日期面板
   // 网格布局管理器,7行7列,网格之间水平和垂直方向上间隔均为5
   panel_day.setLayout(new GridLayout(7,7,3,3));
   //添加星期的名字,并放到面板里
   for(int i=0;i<7;i++)
   {
    button_week[i]=new JButton(" ");
    button_week[i].setText(week[i]);
    button_week[i].setForeground(Color.black);
    panel_day.add(button_week[i]);
   }
   button_week[0].setForeground(Color.red);
   button_week[6].setForeground(Color.red);
   //添加日期,放到面板里
   for(int i=0;i<42;i++)
   {
    button_day[i]=new JButton(" ");
    panel_day.add(button_day[i]);
   }
   this.paintDay();//显示当前年月的日期
   JPanel panel_main=new JPanel();//放置以上两个面板
   //边界布局管理器
   panel_main.setLayout(new BorderLayout());
   panel_main.add(panel_day,BorderLayout.SOUTH);
   panel_main.add(panel_ym,BorderLayout.NORTH);
   getContentPane().add(panel_main);
}
//显示当前年月的日期
private void paintDay()
{
   if(todayFlag)
   {
    //要求显示今天的日历
    year_int=now_year+"";
    month_int=now_month;
   }
   else
   {
    //否则,从下拉框中获取用户选择的年月
    year_int=YearBox.getSelectedItem().toString();
    month_int=MonthBox.getSelectedIndex();//被选的序号
   }
   int year_sel=Integer.parseInt(year_int)-1900;//获取年份值
   Date firstDay=new Date(year_sel,month_int,1);//构造该月的第一天
   GregorianCalendar cal=new GregorianCalendar();//创建一个GregorianCalendar实例
   cal.setTime(firstDay);
   int days=0;//存放某个月份的天数
   int day_week=0;//存放某个月的第一天是星期几的数值
   //判断是几月份,根据它来设定day的值,其中二月份要判断是否是闰年
   if(month_int==0||month_int==2||month_int==4||month_int==6||month_int==7||month_int==9||month_int==11)
   {
    days=31;
   }
   else if(month_int==3||month_int==5||month_int==8||month_int==10)
   {
    days=30;
   }
   else
   {
    //二月,如果是闰年,则有29天,否则是28天
    if(cal.isLeapYear(year_sel))
     days=29;
    else
     days=28;
   }
   //getDay方法获取该天是星期几
   day_week=firstDay.getDay();
   int count=1;
   //绘制按钮,在这里首先要根据选定的月份的第一天是星期几来确定绘制按钮的起始位置
   //其中day_week就是我们要绘制的起始位置,对于那些没有数值可以显示的按钮要置空
   for(int i=day_week;i<day_week+days;count++,i++)
   {
    if(i%7==0||i==6||i==13||i==20||i==27||i==34||i==41)
    {
     //如果是边界上的按钮,文字用红色,以表示周末
     if(i==day_week+now_date.getDate()-1)
     {
      //将与今天一样的日期用蓝色标示
      button_day[i].setForeground(Color.blue);
      button_day[i].setText(count+"");
     }
     else
     {
      //其他边界上的按钮中的文字用红色
      button_day[i].setForeground(Color.red);
      button_day[i].setText(count+"");
     }
    }
    else
    {
     if(i==day_week+now_date.getDate()-1)
     {
      button_day[i].setForeground(Color.blue);
      button_day[i].setText(count+"");
     }
     else
     {
      //一般放置的按钮上的文字用黑色标示
      button_day[i].setForeground(Color.black);
      button_day[i].setText(count+"");
     }
    }
   }
   //对于没有日期数值显示的按钮进行置空处理
   if(day_week==0)
   {
    //如果第一天是周日,则将后面的按钮上的文字都设为空
    for(int i=days;i<42;i++)
    {
     button_day[i].setText(" ");
    }
   }
   else
   {
    //如果第一天不是周日,则将第一天前面的按钮置空
    for(int i=1;i<day_week;i++)
    {
     button_day[i].setText("");
    }
    //最后一天后面的按钮置空
    for(int i=day_week+days;i<42;i++)
    {
     button_day[i].setText("");
    }
   }
}
//处理事件
public void actionPerformed(ActionEvent e)
{
   if(e.getSource()==button_ok)
   {
    //如果单击“查看”按钮就调用setDay()重新绘制按钮
    todayFlag=false;
    this.paintDay();
   }
   else if(e.getSource()==button_today)
   {
    //如果单击“今天”按钮,得到今天的日期
    todayFlag=true;
    YearBox.setSelectedIndex(10);
    MonthBox.setSelectedIndex(now_month);
    this.paintDay();
   }
}

public static void main(String[] args)
{
   CalenderTrain ct=new CalenderTrain();
   ct.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   ct.setVisible(true);
   //ct.show();
}
}

 http://hi.baidu.com/lgb5301314/item/8f4b28d949d5563c48e1dd80

  • 大小: 11.7 KB
分享到:
评论

相关推荐

    小日历-java版-(要求jdk1.4以上)

    【小日历-java版】是一款基于Java编程语言开发的日历应用程序,它要求用户在本地环境安装JDK1.4或以上版本以确保程序能够正常运行。这个项目包含源代码,这意味着用户可以自行编译和修改代码,以满足个性化需求或者...

    日历--java实现

    最原始的方法实现日历,适合初学者。这个日历能打印1901年以后的年份的年历。不过你可以方便的修改以打印更多的年份。

    计算机后端-Java-Java核心基础-第22章 常用类 13. Calendar日历类的使用.avi

    计算机后端-Java-Java核心基础-第22章 常用类 13. Calendar日历类的使用.avi

    java日历-课程设计

    Java日历课程设计是Java编程领域的一个重要实践项目,它涉及到日期和时间处理,这是任何应用程序中的常见需求。在这个项目中,我们将深入学习Java的日期和时间API,以及如何使用这些工具来创建一个功能丰富的日历...

    显示日历的java代码

    日历 java 代码

    日历记事本-JAVA设计.doc

    【日历记事本设计】是一个Java编程项目,旨在巩固Java基础知识,提升编程技能,以及对各类开发工具如JDK、Editplus、Eclipse、JCreator等的运用能力。此项目将日历与记事本功能相结合,允许用户在特定日期记录并查看...

    日历--源代码

    - 在大多数编程语言中,都有内置的日期和时间处理库,如Python的`datetime`模块,Java的`java.time`包等。这些库提供了获取当前日期、比较日期、计算日期差等功能,是构建日历应用的基础。 - 源代码可能会利用这些...

    java日历-时间选择

    在Java编程语言中,日历(Calendar)类是处理日期和时间的核心类,它提供了丰富的API来实现各种日期和时间操作。本知识点主要探讨如何在Java中创建、修改和使用日历对象,以及如何实现时间选择功能。 1. **日历类的...

    日历记事本JAVA 课程设计

    【日历记事本JAVA课程设计】是一个针对Java编程的学习项目,旨在帮助学生掌握Java语言在实际应用中的技能,特别是GUI(图形用户界面)和事件处理。该项目涉及到多个设计环节,包括设计内容、设计要求、总体设计以及...

    实用java小程序-java 日历

    这个“实用java小程序-java 日历”项目旨在教你如何利用Java的标准库`java.time`包来创建一个功能丰富的日历应用。下面将详细介绍其中涉及的关键知识点。 1. **Java日期和时间API**: Java 8引入了全新的日期和...

    java源码包---java 源码 大量 实例

     [TablePanel.java] 日历表格面板  [ConfigLine.java] 控制条类  [RoundBox.java] 限定选择控件  [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件...

    java程序设计-日历代码

    综上所述,这段代码示例展示了如何使用Java Swing构建一个简单的日历应用程序界面,包括如何创建和布局UI组件、响应用户输入以及进行基本的日期计算。尽管代码本身存在一些不足之处,但它提供了一个很好的起点来学习...

    用EWSAPI在Java中发送Exchange邮件

    &lt;artifactId&gt;ews-java-api &lt;version&gt;2.0 ``` 在Java代码中,首要任务是创建一个`ExchangeService`实例,然后设置Exchange服务器的URL和认证信息。例如: ```java ExchangeService service = new ...

    实现简单的日历功能 - Java编程案例

    实现了一个简单的日历功能。用户可以输入年份和月份,程序会计算该月份的天数,并按照每周七天的格式输出一个日历表格。在日历表格中,我们使用空格来表示前面的空白日期,然后按照日期逐行输出,直到该月的最后一天...

    日历记事本(java语言版).rar

    《Java语言实现的日历记事本系统》 在IT领域,编程语言的运用无处不在,其中Java以其跨平台、面向对象的特点深受开发者喜爱。本项目“日历记事本(java语言版)”就是一个典型的应用实例,它充分展示了Java在开发...

    java日历源码 java日历

    Java日历源码是Java编程中的一个重要组成部分,它涉及到日期和时间的处理,这对于任何软件系统来说都是必不可少的功能。在Java中,`java.util.Calendar`类是管理日期和时间的基础类,而`java.time`包在Java 8及更高...

    日历备忘录Java源码

    在本项目中,"日历备忘录Java源码" 提供了一套完整的日历应用程序的源代码,主要由四个核心文件组成:NotePad.java、CalendarPad.java、Month.java 和 Year.java。这些文件分别代表了备忘录、日历、月份和年份的功能...

    java制作日历

    在Java编程中,创建一个类似Windows日历的功能是一项常见的任务,它可以用来显示当前日期、月份的天数,并允许用户选择不同的年份和月份。在这个过程中,我们主要涉及到以下几个Java技术点: 1. **Java日期和时间...

    lunar-java-master.zip

    "lunar-java-master.zip" 文件包含了一个专门处理日历系统,包括公历(阳历)与农历(阴历,又称老黄历)转换的项目。本文将深入探讨Java中如何实现这些功能,并提供相关的代码示例。 首先,我们了解基础概念。公历...

Global site tag (gtag.js) - Google Analytics