Java电子日历设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java程序设计
课程设计报告
设计题目:电子日历设计
班级:
学号:
姓名:
一、需求分析
设计并实现一个电子日历,当用户在下拉列表中选择年份后,显示某年各个月的日历。
二、概要设计
本程序要求实现在点击按钮以及在下拉菜单中进行点击选择时日历页面以及日期信息行能够正确显示当前选择的日期,所以在源程序中应该在点击按钮时产生ActionEvent事件,修改当前显示日期以及显示当月日历;在菜单中选择年份时能够产生ItemEvent事件,使得日历直接跳转到所选年份。
三、详细设计
源程序分为三部分,主程序部分 CalendarMainClass,日历实现部分CalendarClass, 页面实现部分 CalendarFrame。
主程序CalendarMainClass
声明并创建一个页面实现部分CalendarFrame类的对象,使用setBounds() 方法设置初始位置以及窗口大小;使用setTitle() 方法设置窗口标题;使用setLocationRelativeTo()方法设置窗口居中显示:使用setVisible()以及 setDefaultCloseOperation() 方法设置窗口可见和单
击窗体右上角的关闭图标后程序会做出怎样的处理。
日历实现部分 CalendarClass
首先创建一个长度为42的字符串数组,用来存放日期;其后判断所选
月份的长短,并存入数组中。
页面实现部分 CalendarFrame
窗口页面的布局设计如下:新建一个JPanel面板 panel,将其设置为BorderLayout布局,放置于窗口的NORTH区,将按钮上月previousMonth,
按钮下月nextMonth 放置在JPanel的对象pNorth中,并将菜单组件list
和pNorth分别放置在panel的NORTH区,SOUTH区;新建一个JPanel面板pCenter,将pCenter设置为7行7列的GridLayout布局,将星期组件和日
期组件添加入pCenture中,把pCenture添加入一个ScrollPane的对象scrollPane当中,将scrollPane放置在窗口的CENTER区;将日期信息组件showMessage 添加入JPanel的对象pSouth中,并将pSouth放置在窗口的
SOUTH区。
为按钮上月previousMonth,按钮下月nextMonth以及下拉菜单设置监
视器,重写public void actionPerformed(ActionEvent e),public void itemStateChanged(ItemEvent e)方法,使得在进行相应操作时能够产生相
应的时间。
页面实现部分 CalendarFrame 的图形化显示
四、程序代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Calendar;
public class CalendarMainClass
{
public static void main(String args[])
{
CalendarFrame frame =new CalendarFrame();
frame.setBounds(0,0,800,550);
frame.setTitle("Calendar");
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class CalendarClass
{
String day[];
int year=2010,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 date=Calendar.getInstance();
date.set(year,month-1,1);
int week=date.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=week,n=1;i { a[i]=String.valueOf(n) ; n++; } return a; } }