JAVA课程设计报告电子钟日历记事本_第1页
JAVA课程设计报告电子钟日历记事本_第2页
JAVA课程设计报告电子钟日历记事本_第3页
JAVA课程设计报告电子钟日历记事本_第4页
JAVA课程设计报告电子钟日历记事本_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课课程程设设计计报报告告 ( 2012- 2013 年度第年度第 2 学期学期) 日历记事本日历记事本 专业专业计算机科学与技术计算机科学与技术 学生姓名学生姓名董文龙董文龙 班级班级计算机计算机 116 学号学号1110704603 指导教师指导教师徐秀芳徐秀芳 完成日期完成日期2013.7 目 录 目 录.2 1 概 述.4 1.1 课程设计目的.4 1.2 课程设计内容和要求.4 2 系统需求分析.5 2.1 系统目标.5 2.2 主体功能.5 2.3 开发环境.5 3 系统总体设计.5 3.1 系统的功能模块划分.5 3.2 系统流程图.6 4 系统详细设计.6 4.1 主窗口模块设计

2、.6 4.1.1 效果图.6 4.1.2 类的主要成员变量和方法.7 4.1.3 主要程序代码.8 4.2 日期模块设计.19 4.2.1 效果图.19 4.2.2 类的主要成员变量和方法.19 4.2.3 主要程序代码.19 4.3 日历模块设计.21 4.3.1 效果图.21 4.3.2 类的主要成员变量和方法.22 4.3.3 主要程序代码.22 4.4 记事本模块设计.24 4.4.1 效果图.24 4.4.2 类的主要成员变量和方法.24 4.4.3 主要程序代码.25 4.5 图像模块设计.34 4.5.1 效果图.34 4.5.2 类的主要成员变量和方法.34 4.5.3 主要程

3、序代码.35 4.6 时钟模块设计.36 4.6.1 效果图.36 4.6.2 类的主要成员变量和方法.36 4.6.3 主要程序代码.37 5 代码调试.41 6 软件发布.42 7 小结.42 参考文献.44 日历记事本 1 概 述 1.1 课程设计目的 (1)加深对java 语言与面向对象技术课程基础知识的理解,掌握 java 语言 面向对象程序设计的开发方法和步骤; (2)进一步理解面向对象程序设计的思想和方法,利用 java 语言进行程序设计 的能力; (3)课程设计将课本上的理论知识和实际应用相结合,锻炼学生发现问题、分析 问题和解决问题的能力。加强学生研发、编写、调试程序的能力;

4、 (4)培养学生在项目开发中团队合作精神、创新意识及能力; (5)提高学生科技论文写作能力,规范完成课程设计报告。 1.2 课程设计内容和要求 设计 gui 界面的日历记事本,系统将日历和记事本结合在一起,可以方便地保存、 查看日志,即在任何日期记载下有关内容或查看某个日期记载的内容。具体要求如下: (1)界面的左侧是日历和一幅图像。该日历可以按年前后翻动,用鼠标鼠标单击 “上年”按钮时,当前日历的年份将减一;当鼠标左键单击“下年”按钮,当前日历 的年份将加一。该日历还可以在某年内按月前月后翻动,当鼠标左键单击“上月”按 钮时,当前日历的月份将减一;当鼠标左键单击“下月” 当前日历表的月份将加

5、一。 同时图片为了增加美观而加入了日历图像选择功能。 (2)系统界面的右侧是记事本和一个闹钟。用鼠标单击日历上的日期,就可以通 过该记事本编辑有关日志,并将日志保存到一个文件,该文件的名字由该日期组成的 字符序列命名。用户可以查看,删除某个日期的日志,可以继续向某个日志添加新内 容,也可以随着自己的心情而改变字体的大小和样式。 日历记事本 (3)当某个日期有日志时,在日历表该日期的外观上就会出现“有”标记,表明 这个日期有日志,当用户删除某个日期的日志后,该日期的外观上“有”标记就会消 失。 2 系统需求分析 2.1 系统目标 创建日历记事本,实现对某日期的事情进行记录这主要功能,并能显示设置

6、的图片和 字体,增加美观。 2.2 主体功能 (1)可以对个人日志进行添加、查阅、删除; (2)可以方便地在任何日期记载个人日志以及查看某个日期记载的日志; (3)可以显示当前日期与时间,并在整点报时。 (5)可以为日历更改自己喜爱的图片。 (6)可以改变字体的大小和样式 2.3 开发环境 eclipse 3 系统总体设计 3.1 系统的功能模块划分 本系统主要有以下几个功能模块:日历,记事本,时钟,图片等。 该软件主要组成模块和各个模块之间的调用关系如图: 日历记事本主窗口 3.2 系统流程图 时钟模块 日期模块 日历模块 记事本模块 图像模块 calendarwindow calendar

7、messagecalendarimagecalendarpad jtextfield file notepad jtextarea clock 4 系统详细设计 4.1 主窗口模块设计 4.1.1 效果图 4.1.2 类的主要成员变量和方法 (1)成员变量 1)year,month 和 day 是 int 型变量。它们的值分别确定年份、月份和日期。 2)calendarmessage 是 calnedarmessage 对象,该对象用来处理与日期有关的数据。 3)calendarpad 是 calendarpad 对象,该对象可以显示与日期有关的数据。 4)notepad 是 noetpad

8、的对象。具有编辑、读取、保存和删除日志的功能。 5)showyear 和 showmonth 是 jtextfield 类创建的文本框,用来显示年月。 6)showday 数组的每个单元是 jtextfield 类创建的用来显示日期的文本框。 7)calendarimage 是 calendarimage 创建的对象,用来显示图像。 8)clock 是 clock 创建的对象,用来显示时钟。 9)nextyear,previousyear,nextmonth 和 previousmonth 是 jbutton 创建的按钮对 象,名字依次为“下年、上年、下月、上月” 。这些按钮都将当前窗口注册为

9、自己的 actionevent 事件监视器。 10)savadailyrecord,deletedailyrecord 和 readdailyrecord 是 jbutton 创建的按 钮对象,名字依次为“保存日志、删除日志、读取日志” 。这些按钮都将当前窗口注册 为自己的 actionevent 事件监视器。 (2)方法 1)calendarwindow()是构造方法,负责完成窗口初始化。 2)actionperformed(actionevent)方法是 calendarwindow 类实现的 actionlistener 接口中的方法。calendarwindow 创建的窗口是 next

10、year,previousyear,nextmonth,previousmonth,savedailyrecord,deleteda ilyrecord 和 readdailyrecord 按钮的 actionevent 事件监视器,当用户单击其中按钮 时,窗口将执行 actionperformed(actionevent)方法进行相应的操作。 3)mousepressed(mouseevent)方法是 calendarwindow 类实现的 mouselistener 接口 中的方法。calendarwindow 创建的窗口时 showday 数组中的 jtextfield 文本框的 mou

11、seevent 事件监视器,当用户在某个显示日期的文本框上按下鼠标左键时,窗口将 执行 mousepress(mouseevent)方法进行相应操作。 4) focusgained(focusevent)和 focuslost(focusevent)方法是 calendarwindow 类实现的 focuslistener 接口中的方法。calendarwindow 创建窗口是 showday 数组中 的 jtextfield 文本框的 focusevent 事件监视器,当用户的操作导致某个显示日期的 文本框的焦点发生变化时,窗口将执行 focusgained(focusevent)或 foc

12、uslost(focusevent)方法进行相应的操作。 5) domark()方法负责对有日志的日期作出标志。 6) main 方法是程序运行的入口方法3。 4.1.3 主要程序代码 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.*; import java.awt.splashscreen; public class calendarwindow extends jframe implements actionlistener, mou

13、selistener,focuslistener int year,month,day; calendarmessage calendarmessage; calendarpad calendarpad; notepad notepad; jtextfield showyear,showmonth; jtextfield showday; calendarimage calendarimage; string picturename;/图像名称; string getpicture_address; clock clock; jbutton nextyear,previousyear,next

14、month,previousmonth; jbutton savedailyrecord,deletedailyrecord,readdailyrecord; file dir; color backcolor=color.white; public calendarwindow() dir= new file(./dailyrecord); dir.mkdir(); showday = new jtextfield42; for(int i=0;i12) month=1; showmonth.settext(+month); calendarpad.setcalendarmessage(ca

15、lendarmessage); calendarpad.showmonthcalendar(); notepad.setmessage(year,month,day); domark(); else if (e.getsource()=previousmonth) month-; if(month1) month=12; showmonth.settext(+month); calendarpad.setcalendarmessage(calendarmessage); calendarpad.showmonthcalendar(); notepad.setmessage(year,month

16、,day); domark(); else if (e.getsource()=showyear) string s = showyear.gettext().trim(); char a = s.tochararray(); boolean boo = false; for(int i = 0;i a.length;i+) if(!(character.isdigit(ai) boo = true; if(boo=true) joptionpane.showmessagedialog(this,你输入了非法年份,警告!, joptionpane.warning_message); else

17、if(boo=false) year = integer.parseint(s); showyear.settext(+year); calendarmessage.setyear(year); calendarpad.setcalendarmessage(calendarmessage); calendarpad.showmonthcalendar(); notepad.setmessage(year,month,day); domark(); else if (e.getsource()= savedailyrecord) notepad.savefile(dir,year,month,d

18、ay); domark(); else if(e.getsource()=deletedailyrecord) notepad.deletefile(dir,year,month,day); domark(); else if (e.getsource()=readdailyrecord) notepad.readfile(dir,year,month,day); domark(); public void mousepressed(mouseevent e) jtextfield text = (jtextfield)e.getsource(); string str = text.gett

19、ext().trim(); try day = integer.parseint(str); catch (numberformatexception exp) calendarmessage.setday(day); notepad.setmessage(year,month,day); public void mousereleased(mouseevent e) public void mouseentered(mouseevent e) public void mouseexited(mouseevent e) public void mouseclicked(mouseevent e

20、) public void focusgained(focusevent e) component com = (component)e.getsource(); com.setbackground(color.pink); public void focuslost(focusevent e) component com = (component)e.getsource(); com.setbackground(backcolor); public void domark() for(int i=0;ishowday.length;i+) showdayi.removeall(); stri

21、ng str = showdayi.gettext().trim(); try int n = integer.parseint(str); if(ishavedailyrecord(n)=true) jlabel mess = new jlabel(yes); mess.setfont(new font(timesroman,font.plain,11); mess.setforeground(color.blue); showdayi.add(mess); catch (exception exp) calendarpad.repaint(); calendarpad.validate()

22、; public boolean ishavedailyrecord(int n) string key = +year+month+n; string dayfile = dir.list(); boolean boo = false; for(int k = 0;kdayfile.length;k+) if(dayfilek.equals(key+.txt) boo = true; break; return boo; public static void main(string args) new calendarwindow(); 4.2 日期模块设计 4.2.1 效果图 4.2.2

23、类的主要成员变量和方法 (1)成员变量 year,month,day 是 int 型数据,它们的值分别确定年份、月份和日期。 (2) 方法 1) setyear(int)和 getyear()方法分别用来设置 year 和获取 year 的值。 2) setmonth(int)和 getmonth()方法分别用来设置 month 和获取 month 的值。 3) setday(int)和 getday()方法分别用来设置和获取 day 的值。 4) getmonthcalendar()方法是用来处理日期数据,使其按着习惯来显示。即日历牌 中每行的第一列为“星期天” 。getmonthcalen

24、dar()方法根据 year,month 和 day 的 值返回一个存放着“日历”数据的 string 类型的数组,例如,如果某月有 30 天,而 且该月的第一天是星期三,那么返回的 string 类型的数组是:“” , “” , “” , “1” , “2” , “30” 。 4.2.3 主要程序代码 import java.util.calendar; public class calendarmessage int year=-1,month=-1,day=-1; public void setyear(int year) this.year=year; public int getye

25、ar() return year; public void setmonth(int month) if(month=1) this.month=month; else this.month=1; public int getmonth() return month; public void setday(int day) this.day=day; public int getday() return day; public string getmonthcalendar() string day=new string42; calendar rili=calendar.getinstanc

26、e(); rili.set(year,month-1,1);/将日历翻到 year 年 month 月 1 日 int 星期几=rili.get(calendar.day_of_week)-1; int dayamount=0; if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) dayamount=31; if(month=4|month=6|month=9|month=11) dayamount=30; if(month=2) if(year%4=0) else dayamount=28; for(int i=0;i星

27、期几;i+) dayi= ; for(int i=星期几,n=1;i星期几+dayamount;i+) dayi=string.valueof(n); n+; for (int i=星期几+dayamount;i42;i+ ) dayi= ; return day; 4.3 日历模块设计 4.3.1 效果图 4.3.2 类的主要成员变量和方法 (1) 成员变量 1) year,month 和 day 是 int 型数据,它们的值分别确定年份、月份和日期 2) calendarmessage 是 calendarmessage 对象,该对象可以处理和日期有关的数据。 3) showday 数组的

28、每个单元是 jtextfield 类创建的用来显示日期的文本框。 4) “星期”是 string 数组,单元的值依次为“sun 日” 、 “mon 一” 、 “tue 二” 、 “wed 三” 、 “thu 四” 、 “fri 五” 、 “sat 六” 。 (2) 方法 1) calendarpad()是构造方法,用来创建 calendarpad 对象。 2) setshowdaytextfield(jtextfield)方法负责设置 showday 数组。 3) setcalendarmessage(calendarmessage)方法负责设置 calendarmessage 对象。 4)

29、showmonthcalendar()方法负责显示“日历”4。 4.3.3 主要程序代码 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class calendarpad extends jpanel int year,month,day; calendarmessage calendarmessage; jtextfield showday; jlabel title ; string 星期=sun 日,mon 一,tue 二,wed 三,thu 四,f

30、ri 五,sat 六; jpanel north,center; public calendarpad() setlayout(new borderlayout(); north=new jpanel(); north.setlayout(new gridlayout(1,7); center=new jpanel(); center.setlayout(new gridlayout(6,7); add(center,borderlayout.center); add(north,borderlayout.north); title=new jlabel7; for(int j=0;j7;j+

31、) titlej=new jlabel(); titlej.setfont(new font(timesroman,font.bold,12); titlej.settext(星期j); titlej.sethorizontalalignment(jlabel.center); titlej.setborder(borderfactory.createraisedbevelborder(); north.add(titlej); title0.setforeground(color.red); title6.setforeground(color.blue); public void sets

32、howdaytextfield(jtextfield text) showday=text; for(int i=0;ishowday.length;i+) showdayi.setfont(new font(timesroman,font.bold,15); showdayi.sethorizontalalignment(jtextfield.center); showdayi.seteditable(false); center.add(showdayi); public void setcalendarmessage(calendarmessage calendarmessage) th

33、is.calendarmessage=calendarmessage; public void showmonthcalendar() string a=calendarmessage.getmonthcalendar(); for(int i=0;i42;i+) showdayi.settext(ai); validate(); 4.4 记事本模块设计 4.4.1 效果图 4.4.2 类的主要成员变量和方法 (1) 成员变量 1)text 是 jtextarea 创建的文本区,可在 text 中编译多行文本。 2)showmessage 是 jtextfield 创建的文本条,用来显示和日期

34、相关的数据。 3)popup 是 jpopupmenu 创建的弹出式菜单。 4) copy、cut、paste 是 jmenuitem 创建的菜单项,名字依次是“复制”, “剪切”, “黏贴” 。 5)list1,list2 是列表框 choice 创建的两个列表对象。 6)btn 是 jbutton 创建的一个按钮,叫做“颜色” 。 7)labl 是 jlabel 创建的标签,叫做“事件发生时间(hh:mm) ” 。 (2)方法 1) notepad()构造方法,用来创建 notepad 对象。 2) setshowmessage(int,int,int)方法根据参数指定的日期数据显示有关日

35、期信 息。 3) save(file,int,int,int)方法根据参数指定日期保存日志 4) delete(file,int,int,int) 用于删除日志 5) read(file,int,int, int)用于读取日志。 4.4.3 主要程序代码 import java.awt.*; import javax.swing.*; import java.io.*; import java.awt.event.*; class notepad extends jpanel implements actionlistener,mouselistener,itemlistener jpopup

36、menu popup; jmenuitem cut,copy,paste; jtextfield showmessage,time; jtextarea ta; jpanel p1,p2,p3; choice list1,list2; jbutton btn; jlabel labl; string size=10,12,14,16,18,20,22,24,26,28,30,32,34,36; notepad() popup=new jpopupmenu(); showmessage=new jtextfield(); showmessage.seteditable(false); ta=ne

37、w jtextarea(5,20); p1=new jpanel(); p2=new jpanel(); p3=new jpanel(); btn=new jbutton(颜色); labl=new jlabel(事件发生时间(hh:mm):); time=new jtextfield(10); list1=new choice(); list2=new choice(); graphicsenvironment ge=graphicsenvironment.getlocalgraphicsenvironment(); string fontname=ge.getavailablefontfa

38、milynames(); for(int i=0;ifontname.length;i+) list1.add(fontnamei); for(int i=0;isize.length;i+) list2.add(sizei); cut=new jmenuitem(剪切); cut.setaccelerator(keystroke.getkeystroke(keyevent.vk_x,inputevent.ctrl_mask); copy=new jmenuitem(复制); copy.setaccelerator(keystroke.getkeystroke(keyevent.vk_c,in

39、putevent.ctrl_mask); paste=new jmenuitem(粘贴); paste.setaccelerator(keystroke.getkeystroke(keyevent.vk_v,inputevent.ctrl_mask); popup.add(cut); popup.add(copy); popup.add(paste); p1.add(list1); p1.add(list2); /p1.add(btn); p3.add(labl); p3.add(time); setlayout(new borderlayout(); add(showmessage,bord

40、erlayout.north); p2.setlayout(new borderlayout(); p2.add(new jscrollpane(ta),borderlayout.center); /p2.add(p3,borderlayout.south); add(p2,borderlayout.center); add(p1,borderlayout.south); setbounds(0,0,600,600); setvisible(true); btn.addactionlistener(this); list1.additemlistener(this); list2.addite

41、mlistener(this); cut.addactionlistener(this); copy.addactionlistener(this); paste.addactionlistener(this); ta.addmouselistener(this); public void setmessage(int year,int month,int day) showmessage.settext(year+年+month+月+day+日); showmessage.setforeground(color.blue); showmessage.setfont(new font(宋体,f

42、ont.bold,15); public void actionperformed(actionevent e) if(e.getsource()=cut) cut(); if(e.getsource()=copy) copy(); if(e.getsource()=paste) paste(); if(e.getsource()=btn) color newcolor=jcolorchooser.showdialog(this, 选择颜色, ta.getforeground(); if(newcolor!=null) ta.setforeground(newcolor); public vo

43、id itemstatechanged(itemevent e) string n1=list2.getselecteditem(); string name=list1.getselecteditem(); int n2=integer.parseint(n1); font f=new font(name,font.plain,n2); ta.setfont(f); public void mousereleased(mouseevent e) if(e.getbutton()=mouseevent.button3) popup.show(ta,e.getx(),e.gety(); if(e

44、.getbutton()=mouseevent.button1) popup.setvisible(false); public void mousepressed(mouseevent e) public void mouseentered(mouseevent e) public void mouseexited(mouseevent e) public void mouseclicked(mouseevent e) public void cut() ta.cut(); popup.setvisible(false); public void copy() ta.copy(); popu

45、p.setvisible(false); public void paste() ta.paste(); popup.setvisible(false); public void savefile(file dir,int year,int month,int day) string dailyrecord=time.gettext()+#+ta.gettext()+#; string filename=+year+month+day+.txt; string key=+year+month+day; string dialyfile=dir.list(); boolean b=false;

46、for(int i=0;idialyfile.length;i+) if(dialyfilei.startswith(key) b=true; break; if(b) int n=joptionpane.showconfirmdialog(this,+year+年+month+月+day+日+ 已经有日志存在,是否添加日志?,确认对话框,joptionpane.yes_no_option); if(n=joptionpane.yes_option) try file file=new file(dir,filename); randomaccessfile out=new randomacc

47、essfile(file,rw); long end=out.length(); bytebb=dailyrecord.getbytes(); out.seek(end); out.write(bb); out.close(); catch(ioexception e) ta.settext(); else ta.settext(); else try file file=new file(dir,filename); filewriter fw=new filewriter(file); bufferedwriter bw=new bufferedwriter(fw); bw.write(d

48、ailyrecord); bw.close(); fw.close(); catch(ioexception e) joptionpane.showmessagedialog(this,添加日志成功,消息对话框 ,joptionpane.information_message); ta.settext(); time.settext(); public void deletefile(file dir,int year,int month,int day) string key=+year+month+day; string dialyfile=dir.list(); boolean b=fa

49、lse; for(int i=0;idialyfile.length;i+) if(dialyfilei.startswith(key) b=true; break; if(b) int n=joptionpane.showconfirmdialog(this,是否删除+year+年+month+月 +day+日的日志?,确认对话框,joptionpane.yes_no_option); if(n=joptionpane.yes_option) try string filename=+year+month+day+.txt; file file=new file(dir,filename);

50、 file.delete(); catch(exception e) ta.settext(); else joptionpane.showmessagedialog(this,+year+年+month+月+day+日无日志!, 消息对话框,joptionpane.information_message); public void readfile(file dir,int year,int month,int day) string filename=+year+month+day+.txt; string key=+year+month+day; string dialyfile=dir

51、.list(); boolean b=false; for(int i=0;idialyfile.length;i+) if(dialyfilei.startswith(key) b=true; break; if(b) ta.settext(); time.settext(); try file file=new file(dir,filename); filereader inone=new filereader(file); bufferedreader intwo=new bufferedreader(inone); string s; while(s=intwo.readline()

52、!=null) ta.append(s+n); inone.close(); intwo.close(); catch(ioexception e) else joptionpane.showmessagedialog(this,+year+年+month+月+day+日无日志!, 消息对话框,joptionpane.information_message); 4.5 图像模块设计 4.5.1 效果图 4.5.2 类的主要成员变量和方法 (1) 成员变量 1) imagefile 是 file 对象,用来存放图像文件的引用 2) image 是 image 对象 3) tool 是 tooki

53、t 对象,负责创建 image 对象 (2) 方法 1) calendarimage()是构造方法,负责创建 calendarimage 对象 2) setimagefile(file)方法负责设置 imagefile 对象,并根据 imagefile 创建 image 3) paintcomponent(griphics)方法负责绘制 image 4.5.3 主要程序代码 import javax.swing.*; import java.io.*; import java.awt.*; public class calendarimage extends jpanel file image

54、file; image image; toolkit tool; /构造方法 public calendarimage() tool=gettoolkit();/获取工具; /设置图像文件; public void setimagefile(file f) imagefile =f; try image=tool.getimage(imagefile.touri().tourl();/得到图像文件; catch (exception eeee) repaint();/重绘; /重载 paintcomponent 方法,覆盖原来的,供 repaint()调用; public void paint

55、component(graphics g) super.paintcomponent(g); int w=getbounds().width; int h=getbounds().height; g.drawimage(image,0,0,w,h,this); 4.6 时钟模块设计 4.6.1 效果图 4.6.2 类的主要成员变量和方法 (1) 成员变量 1) date 是 date 对像,负责封装本地时间 2) secondtime 是 javax.swing 包中 timer 类创建的计时 3) hour,minute 和 second 是 int 型数据,分别飞“小时” , “分钟”和“

56、秒” 4) secondline,minuteline 和 hourline 是 lint2d 对象,分别负责绘制“时针” , “分 针” , “秒针” 5) pointsx,pointsy 是 double 型数组,其单元值用来表示秒针端点的坐标 6) pointmx,pointmy 是 double 型数组,其单元值用来表示分针端点坐标 7) pointhx,pointhy 是 double 型数组,其单元值用来便是时针端点坐标5 (2)方法 1) clock()是构造方法,用来创建 clock 对象 2) initpoint()负责创建表盘所需要的坐标点 3) paintcomponen

57、t(graphics)负责完成绘制工作 4)actionperformed(actionevent)是接口 actionlistener 中的方法。使用 timer 类的构造方法:timer(int a ,object b )创建一个计时器,其中的参数 a 的单位 是毫秒,确定计时器每隔 a 毫秒“振铃”一次,参数 b 是计时器的监视器。计时器发 生的振铃时件是 actionevent 类型时件,当振铃时间发生时,监视器就会监视到这个 事件,监视器就会回调用 actionlistener 接口中的 actionperformed(actionevent)方 法,该方法所做的操作是:每隔 1 秒

58、钟,让秒针前进一个刻度,既 secondline 改变端 点坐标;每隔 1 分钟,让分针前进一个刻度(表盘一周为 360,每个时刻为 6) , 既 muniteline 改变端点坐标;每隔 12 分钟,让时针前进一个刻度,既 hourline 改变 端点坐标6。 4.6.3 主要程序代码 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.*; import java.util.*; import .*; import java.applet.*; import java.

59、io.*; public class clock extends jpanel implements actionlistener date date; javax.swing.timer secondtime; int hour,minute,second; line2d secondline,minuteline,hourline; int a,b,c,width,height; double pointsx=new double60, /用来表示秒针端点坐标的数组 pointsy=new double60, pointmx=new double60, /用来表示分针端点坐标的数组 poi

60、ntmy=new double60, pointhx=new double60, /用来表示时针端点坐标的数组 pointhy=new double60; clock() setbackground(color.cyan); initpoint(); secondtime=new javax.swing.timer(1000,this); secondline=new line2d.double(0,0,0,0); minuteline=new line2d.double(0,0,0,0); hourline=new line2d.double(0,0,0,0); secondtime.sta

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论