Java实现的日历功能完整示例

时间:2021-05-20

本文实例讲述了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.awt.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||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; }}

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

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

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

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

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

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章