本文实例讲述了java实现的日历功能。分享给大家供大家参考,具体如下:

应用名称:Java日历

用到的知识:Java GUI编程,日期操作

开发环境:win8+eclipse+jdk1.8

功能说明:一个很简单的万年历,可以选择年份和月份,也可以用按钮翻页,日历会实时更新日期,最下方会显示当前操作系统的时间。

效果图:

源代码:

CalendarFrame.java

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awthttp://www.cppcns.com.event.ActionListener;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.swing.JButton;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.border.BevelBorder;

import javax.swing.border.SoftBevelBorder;

public class CalendarFrame extends JFrame implements ActionListener{

/**

* @author Nut

* 2016.01.13

*/

private static final long serialVersionUID = -7260798316896145633L;

JLabel labelDay[] = new JLabel[42];

JButton titleName[] = new JButton[7];

String name[]={"日","一","二","三","四","五","六"};

JButton nextMonth,previousMonth;

JComboBox choiceYear,choiceMonth;

Calendarbean calendar;

JLabel showYear,showMonth;

JLabel showmessage=new JLabel("",JLabel.CENTER);

int year = 2011,month=2;

//构造方法初始化界面

public CalendarFrame(){

JPanel pCenter = new JPanel();

pCenter.setLayout(new GridLayout(7,7));

//星期栏

for(int i=0;i<7;i++){

titleName[i]=new JButton(name[i]);

titleName[i].setBorder(new SoftBevelBorder(BevelBorder.RAISED));

pCenter.add(titleName[i]);

}

//日期栏

for(int i=0;i<42;i++){

labelDay[i]=new JLabel("",JLabel.CENTER);

labelDay[i].setBorder(new SoftBevelBorder(BevelBorder.LOWERED));

pCenter.add(labelDay[i]);

}

//年月选择栏

choiceYear=new JComboBox();

choiceMonth=new JComboBox();

showYear=new JLabel("年");

showMonth=new JLabel("月 ");

for(int i=1990;i<2050;i++)

choiceYear.addItem(i);

choiceYear.addActionListener(this);

for(int i=1;i<=12;i++)

choiceMonth.addItem(i);

choiceMonth.addActionListener(this);

calendar=new Calendarbean();

nextMonth=new JButton("下月");

previousMonth=new JButton("上月");

nextMonth.addActionListener(this);

previousMonth.addActionListener(this);

JPanel pNorth=new JPanel(),

pSouth=new JPanel();

pNorth.add(choiceYear);

pNorth.add(showYear);

pNorth.add(choiceMonth);

pNorth.add(showMonth);

pNorth.add(previousMonth);

pNorth.add (nextMonth);

pSouth.add(showmessage);

add(pCenter,BorderLayout.CENTER);

add(pNorth,BorderLayout.NORTH);

add(pSouth,BorderLayout.SOUTH);

setYearAndMonth(year,month);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}

public void setYearAndMonth(int y,int m){

calendar.setYear(y);

calendar.setMonth(m);

String day[]=calendar.getCalendar();

for(int i=0;i<42;i++)

labelDay[i].setText(day[i]);

SimpleDateFormat df 编程客栈= new SimpleDateFormat("yyyy年MM月dd日 EEEE");//设置日期格式

showmessage.setText("系统时间:"+df.format(new Date()));

}

//事件动作

public void actionPerformed(ActionEvent e){

if(e.getSource()==nextMonth){

month=month +1;

if(month>12)编程客栈

month=1;

calendar.setMonth(month);

choiceMonth.setSelectedItem(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);

choiceMonth.setSelectedItem(month);

String day[]=calendar.getCalendar();

for(int i=0;i<42;i++){

labelDay[i].setText(day[i]);

}

}

//选择年份

else if (e.getSource()==choiceYear){

calendar.setYear((Integer) choiceYear.getSelectedItem());

String day[]=calendar.getCalendar();

for(int i=0;i<42;i++){

labelDay[i].setText(day[i]);

}

}

//选择月份

else if (e.getSource()==choiceMonth){

calendar.setMonth((Integer) choiceMonth.getSelectedItem());

String day[]=calendar.getCalendar();

for(int i=0;i<42;i++){

labelDay[i].setText(day[i]);

}

}

// showmessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月");

}

}

Calendarbean.java

import java.util.Calendar;

public class Calendarbean {

String day[];

int year = 2005,month=0;

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|www.cppcns.com|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

a[i]=String.valueOf(n);

n++;

}

return a;

}

}

CalendarMainClass.java

public class CalendarMainClass{

public static void main(String args[])

{

CalendarFrame frame = new CalendarFrame();

frame.setBounds(100,100,360,300);

frame.setTitle("Java日历");

frame.setVisible(true);

frame.setYearAndMonth(1990,1);//设置日历初始值为1990年1月

}

}

PS:这里再为大家推荐几款时间及日期相关工具供大家参考使用:

Unix时间戳(timestamp)转换工具:http://tools.jb51.net/code/unixtime

在线日期/天数计算器:http://tools.jb51.net/jisuanqi/date_jisuanqi

在线日期计算器/相差天数计www.cppcns.com算器:http://tools.jb51.net/jisuanqi/datecalc

在线日期天数差计算器:http://tools.jb51.net/jisuanqi/onlinedatejsq

更多关于java相关内容感兴趣的读者可查看本站专题:《java日期与时间操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

本文标题: Java实现的日历功能完整示例

本文地址: http://www.cppcns.com/ruanjian/java/253155.html

java中实现工厂日历_Java实现的日历功能完整示例相关推荐

  1. java中的工厂模式_java中工厂模式详解和使用方法

    工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻 ...

  2. java中reject方法作用_Java BindingResult.rejectValue方法代碼示例

    本文整理匯總了Java中org.springframework.validation.BindingResult.rejectValue方法的典型用法代碼示例.如果您正苦於以下問題:Java Bind ...

  3. Java中的isnan函数_Java Float类isNaN()方法与示例

    语法:public boolean isNaN (); public static boolean isNaN(float value); float 类isNaN()方法isNaN()方法在java ...

  4. java中intvalue方法作用_Java Integer类intValue()方法及示例

    整数类intValue()方法intValue()方法在java.lang包中可用. intValue()方法用于返回此Integer对象表示的值,该值转换为int类型(通过强制转换). intVal ...

  5. java中replace的用法_Java String replace() 使用方法及示例

    Java String replace() 使用方法及示例 Java String replace()方法用 新的字符/文本 替换字符串中每个匹配的旧字符/文本. replace()方法的语法是 st ...

  6. java中的工厂_java中的工厂模式

    1.工厂模式 java中的工厂模式,个人理解是:要想制作一个汽车,则必须有轮子,发动机,座椅等. 1.创建一个接口,并且使得轮子,发动机,座椅三个实现类实现这个接口. 2.创建一个工厂,生成基于给定信 ...

  7. php ajax mysql 分页查询_PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)

    1.首先做主页面Ajax_pag.php 代码如下: Ajax做分页 .header{ margin-top: 20px; } 关键字: 地区代号地区名称父级代号 2.然后做分页查询JS页面Ajax_ ...

  8. java中的工厂模式

    一.工厂模式介绍 工厂模式专门负责将大量有共同接口的类实例化.工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式的几种形态: (1)简单工厂(Simple Factor ...

  9. java中的分层概念_Java分层概念

    1.JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分?(下面所描述的service层就是biz) 首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对 ...

最新文章

  1. 2022-2028年中国液晶电视市场投资分析及前景预测报告
  2. 2021年大数据ELK(九):使用VSCode测试分词器
  3. 【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )
  4. Linux资料分享,强势来袭!
  5. python 判断当前系统的Python编译器类型
  6. dns服务器的配置与管理
  7. 《王者荣耀》回应故障:3个工作日内补发排位赛星积分丢失
  8. vba for wps 7.0_两表数据核对,WPS表格真香
  9. mysql update多个字段_常见的MySQL命令大全fourth
  10. html jsf ajax blur,是否可以使用JSF ajax更新非JSF组件(纯HTML)?
  11. vb代码转为c++代码_vb代码转为c++代码_VB源码转换工具(VBto Converter)
  12. Python yolo 神经网络实现视频中的行人车辆检测计数(车流量统计)YOLO多目标跟踪与计数
  13. Ubuntu 20.04 LTS 修改IP地址
  14. 融新聚力,筑梦畅行|云畅科技“融云计划”第一期集训营圆满结营
  15. 股票实时行情数据有哪些分类?
  16. 无线网和网吧服务器,网吧网络使用无线局域网的几个优势所在
  17. SATA、AHCI、ATA等相关知识概述(基本概念)
  18. mysql实践周心得_实践周心得体会4篇
  19. 织梦data搬家后后台打开空白的解决方法
  20. xdm俺来了、详解超市订单管理系统SSM版本

热门文章

  1. 计算机10进制化2进制在线,二进制转十进制
  2. 人工智能:智慧环保(上海AI智慧环保,绿色新时代)
  3. 让学前端不再害怕英语单词(三)
  4. 无人机任务分配 matlab,Multi-UAV Task Assignment Benchmark
  5. web在线编辑word,excel,pdf插件-----WebOffice 文档控件API
  6. Verilog中if-else和case对比
  7. Android车机初体验
  8. python语言设计二级教程答案2019_全国计算机等级考试二级教程2019年版——Python语言程序设计参考答案...
  9. 【包运行】Java 实现图形界面的邮件轰炸机附带视频指导教程
  10. Zabbix忘记登录密码重置