




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2 本科生课程设计本科生课程设计 课程名称java 程序设计课程设计 课程编号j1620011 题目日历记事本 学号200811622214 学生姓名 所在专业信息管理与信息系统 所在班级信管 1082 指导教师 成绩 教师签字 评语: 课程设计时间:2010 年 12 月 20 日-2010 年 12 月 24 日 设计总说明 - 1 - 目目 录录 摘 要 2 1引 言 2 2. 设计的目的与任 务 2 3设计方 案 3 3.1 总体设 计 3 3.2 设计要 求 3 3.3 系统的主要功 能 设计总说明 - 2 - 3 3.4 各个类的组合结构 图 4 3.5 各个类说 明 4 3.5.
2、1 calendarwindow 类4 3.5.2 calendarmessage 类11 3.5.3 calendarpad 类 13 3.5.4 notepad 类 14 3.5.5 calendarimage 类19 3.5.6 clock 类 20 设计总说明 - 3 - 4各种功能截 图 24 5. 课程设计总 结 26 javajava 程序设计程序设计课程设计课程设计 日历记事本日历记事本 摘 要 本课程设计通过代码实现将理论知识和具体实践相结合,巩固提高了对 java 的相 关方法与概念的理解,使学生的发散思维及动手能力进一步加强,加强对计算机及软 件工程的进一步了解。 在这个
3、课程设计中,我们做成了一个有日历标记的记事本软件,日历记事本面板 由日历、记事本、图片、时钟四部分组成。日历部分可以选择不同的年份、月份、日 期和星期;记事本模块可以实现查看,保存,删除日志等操作;并且每一步操作都有 相应提示;图片模块可以显示预设的图片;时钟模块可以用时钟来显示当前时间。本 软件是一个实用性较强,简洁,美观,方便的功能软件。 1. 引言 java 是一种纯面向对象的、网络编程首选的语言。java 技术作为软件开 的一种 革命性技术,已被列为当今世界信息技术的主流之一。为了适应时代潮流,我们应该 加强对 java 的学习,更好的掌握这门课程。为此,我们成了一个课程小组,经过小组
4、 成的商讨之后,我们决定以“日历记事本”为设 题材,借此巩固加深我们对 java 的了解。 设计总说明 - 4 - 本次课程设计的实例虽然比较简单,程序设计也不是很复杂,但在此程序的设计 过程也是一个学习过程,更是对复杂程序的一个学习过程,还能培养我们的数抽象能 力。因此,我们觉得这次课程设计是非常有意义的,能为我们今后学习面向过程的程 序设计作一些铺垫。 2.设计目的与任务 本课程设计所要求达到的目的和任务:通过 java 程序设计的一些重要理论基础来实现“日 历记事本”的“日历”和“记事本”的双重功能。并通过此次课程设计的训练,使学生巩固和 加深对 java 这门课程的理解,通过利用所学到
5、的计算科学的理论知识,提高解决实际问题的能 力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应 用软件的分析方法和工程设计方法,能正确阐述设计和实验结果。通过这次课程设计,培养实 事求是、认真、严谨的科学态度和刻苦钻研不断创新的精神,逐步建立正确的全局观念。 3.设计方案 3.1 总体设计总体设计 (1)问题定义:)问题定义:创建日历记事本,实现对某日期的事情进行记录这主要功能,并能 显示设置的图片和时钟,增加美观。 (2)问题分析)问题分析:通过对“日历记事本”这一题材的分析,我需要四个类来实现其 “日历”和“记事本”这两大功能。通过主类 calendwind
6、ow 创建动日历记事本软件的 主窗口,该类含有 main 方法,程序从该类开始执行。再用余下 calendarpad、calendarmessage 、notepad 类来显示并改变日期和实现记事本的功能。 而 calendarimage 和 clock 这两个类用来显示图片和时钟。 (3)研究意义)研究意义:通过本次课程设计,我们掌握了 java 语言的基本运用,提高了理论结 合实际的能力。 3.2 设计要求设计要求 (1)界面的左侧是日历和一幅图。该日历可以按年前后翻动,用鼠标鼠标单击“上 年”按钮时,当前日历的年份将减一;当鼠标左键单击“下年”按钮,当前日历的年份将 加一。该日历还可以在
7、某年内按月前月后翻动,当鼠标左键单击“上月”按钮时,当前日 历的月份将减一;当鼠标左键单击“下月” 当前日历表的月份将加一。图片是为了增加 美观而加进去的。 (2)系统界面的右侧是记事本和一个闹钟。用鼠标单击日历上的日期,就可以通过 该记事本编辑有关日志,并将日志保存到一个文件,该文件的名字由该日期组成的字 设计总说明 - 5 - 符序列命名。用户可以查看,删除某个日期的日志,也可以继续向某个日志添加新内 容。 时钟能够实时显示当前的时间。 (3)当某个日期有日志时,在日历表该日期的外观上就会出现“yes”标记,表明 这个日期有日志,当用户删除某个日期的日志后,该日期的外观上“yes”标志就会
8、消 失。 3.3 系统的主要功能 (1)可以对个人日志进行添加、查阅、删除; (2)可以方便地在任何日期记载个人日志以及查看某个日期记载的日志 ; (3)可以显示当前日期与时间。 3.4 各个类的组合结构图 3.5 各个类说明 (1 1)主函数)主函数 calendarwindowcalendarwindow 类类 该类是整个程序的主框架,是 javax.swing 包中 jframe 的一个子类。并实现了 actionlistener、mouselistener 和 focuslistener 接口。以下是该类的有关数据说明! 1)成员变量 year,month 和 day 是 int 型变
9、量。它们的值分别确定年份、月份和日期。 calendarwindow calendarmessagecalendarimagecalendarpad jtextfield file notepad jtextarea clock 设计总说明 - 6 - calendarmessage 是 calnedarmessage 对象,该对象用来处理与日期有关的数据。 calendarpad 是 calendarpad 对象,该对象可以显示与日期有关的数据。 notpad 是 notpad 的对象。具有编辑、读取、保存和删除日志的功能。 showyear 和 showmonth 是 jtextfield
10、 类创建的文本框,用来显示年月。 showday 数组的每个单元是 jtextfield 类创建的用来显示日期的文本框。 calendarimage 是 calendarimage 创建的对象,用来显示图像。 clock 是 clock 创建的对象,用来显示时钟。 nextyear,previousyear,nextmonth 和 previousmonth 是 jbutton 创建的按钮 对象,名字依次为“下年、上年、下月、上月” 。这些按钮都将当前窗口注册为自 己的 actionevent 事件监视器。 savadailyrecord,deletedailyrecord 和 readdai
11、lyrecord 是 jbutton 创建的按 钮对象,名字依次为“保存日志、删除日志、读取日志” 。这些按钮都将当前窗口 注册为自己的 actionevent 事件监视器。 2)方法 calendarwindow()是构造方法,负责完成窗口初始化。 actionperformed(actionevent)方法是 calendarwindow 类实现的 actionlistener 接口中的方法。calendarwindow 创建的窗口是 nextyear,previousyear,nextmonth,previousmonth,savedailyrecord,d eletedailyreco
12、rd 和 readdailyrecord 按钮的 actionevent 事件监视器,当用 户单击其中按钮时,窗口将执行 actionperformed(actionevent)方法进行相 应的操作。 mousepressed(mouseevent)方法是 calendarwindow 类实现的 mouselistener 接口中的方法。calendarwindow 创建的窗口时 showday 数组中的 jtextfield 文本框的 mouseevent 事件监视器,当用户在某个显示日期的文本框上按下鼠 标左键时,窗口将执行 mousepress(mouseevent)方法进行相应操作。
13、focusgained(focusevent)和 focuslost(focusevent)方法是 calendarwindow 类实现的 focuslistener 接口中的方法。calendarwindow 创 建窗口是 showday 数组中的 jtextfield 文本框的 focusevent 事件监视器,当 用户的操作导致某个显示日期的文本框的焦点发生变化时,窗口将执行 focusgained(focusevent)或 focuslost(focusevent)方法进行相应的操作。 domark()方法负责对有日志的日期作出标志。 main 方法是程序运行的入口方法。 设计总说明
14、- 7 - 详细代码:详细代码: import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.*; public class calendarwindow extends jframe implements actionlistener, mouselistener,focuslistener int year,month,day; calendarmessage calendarmessage; calendarpad calendarpad; not
15、epad notepad; jtextfield showyear,showmonth; jtextfield showday; calendarimage calendarimage; clock clock; jbutton nextyear,previousyear,nextmonth,previousmonth; jbutton savedailyrecord,deletedailyrecord,readdailyrecord; file dir; color backcolor=color.white; public calendarwindow() dir= new file(./
16、dailyrecord); dir.mkdir(); showday = new jtextfield42; for(int i=0;i12) month=1; showmonth.settext(+month); calendarpad.setcalendarmessage(calendarmessage); calendarpad.showmonthcalendar(); notepad.setshowmessage(year,month,day); domark(); else if (e.getsource()=previousmonth) 设计总说明 - 10 - month-; i
17、f(month1) month=12; showmonth.settext(+month); calendarpad.setcalendarmessage(calendarmessage); calendarpad.showmonthcalendar(); notepad.setshowmessage(year,month,day); domark(); else if (e.getsource()=showyear) string s = showyear.gettext().trim(); char a = s.tochararray(); boolean boo = false; for
18、(int i = 0;i a.length;i+) if(!(character.isdigit(ai) boo = true; if(boo=true) joptionpane.showmessagedialog(this,你输入了非法年份,警告!, joptionpane.warning_message); else if(boo=false) year = integer.parseint(s); showyear.settext(+year); calendarmessage.setyear(year); calendarpad.setcalendarmessage(calendarm
19、essage); calendarpad.showmonthcalendar(); notepad.setshowmessage(year,month,day); domark(); else if (e.getsource()= savedailyrecord) notepad.save(dir,year,month,day); domark(); else if(e.getsource()=deletedailyrecord) notepad.delete(dir,year,month,day); domark(); else if (e.getsource()=readdailyreco
20、rd) notepad.read(dir,year,month,day); 设计总说明 - 11 - domark(); public void mousepressed(mouseevent e) jtextfield text = (jtextfield)e.getsource(); string str = text.gettext().trim(); try day = integer.parseint(str); catch (numberformatexception exp) calendarmessage.setday(day); notepad.setshowmessage(
21、year,month,day); public void mousereleased(mouseevent e) public void mouseentered(mouseevent e) public void mouseexited(mouseevent e) public void mouseclicked(mouseevent e) public void focusgained(focusevent e) component com = (component)e.getsource(); com.setbackground(color.pink); public void focu
22、slost(focusevent e) component com = (component)e.getsource(); com.setbackground(backcolor); public void domark() for(int i=0;ishowday.length;i+) showdayi.removeall(); string str = showdayi.gettext().trim(); try int n = integer.parseint(str); if(ishavedailyrecord(n)=true) 设计总说明 - 12 - jlabel mess = n
23、ew jlabel(yes); mess.setfont(new font(timesroman,font.plain,11); mess.setforeground(color.blue); showdayi.add(mess); catch (exception exp) calendarpad.repaint(); calendarpad.validate(); public boolean ishavedailyrecord(int n) string key = +year+month+n; string dayfile = dir.list(); boolean boo = fal
24、se; 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(); (2 2)calendarmessagecalendarmessage 类类 calendarmessage 类创建的对象 calendarmessage 是 calendarwindow 窗口的重要成员 对象之一,负责处理和日期有关的数据。该类的有关数据说明如下: 1)成员变量 ye
25、ar,month,day 是 int 型数据,它们的值分别确定年份、月份和日期。 2)方法 设计总说明 - 13 - setyear(int)和 getyear()方法分别用来设置 year 和获取 year 的值。 setmonth(int)和 getmonth()方法分别用来设置 month 和获取 month 的值。 setday(int)和 getday()方法分别用来设置和获取 day 的值。 getmonthcalendar()方法是用来处理日期数据,使其按着习惯来显示。即日 历牌中每行的第一列为“星期天” 。getmonthcalendar()方法根据 year,month 和
26、day 的值返回一个存放着“日历”数据的 string 类型的数组, 例如,如果某月有 30 天,而且该月的第一天是星期三,那么返回的 string 类 型的数组是:“” , “” , “” , “1” , “2” , “30” 。 详细代码:详细代码: import java.util.calendar; public class calendarmessage int year=-1,month=-1,day=-1; public void setyear(int year) this.year=year; public int getyear() return year; public
27、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.getinstance(); 设计总说明 - 14 - rili.se
28、t(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星期几;i+) dayi=
29、 ; for(int i=星期几,n=1;i星期几+dayamount;i+) dayi=string.valueof(n); n+; for (int i=星期几+dayamount;i42;i+ ) dayi= ; return day; (3 3)calendarpadcalendarpad 类类 calendarpad 类是 javax.swing 包中 jpanel 容器的子类,所创建的对象:calendarpad 是 calendarwindow 类中最重要的成员之一,负责显示经 calendarmessage 类处理后的 日期数据,被添加到 calendarwindow 窗口的左
30、上侧。以下是该类的有关说明: 1)成员变量 year,month 和 day 是 int 型数据,它们的值分别确定年份、月份和日期 calendarmessage 是 calendarmessage 对象,该对象可以处理和日期有关的数 据。 showday 数组的每个单元是 jtextfield 类创建的用来显示日期的文本框。 “星期”是 string 数组,单元的值依次为“sun 日” 、 “mon 一” 、 “tue 二” 、 “wed 三” 、 “thu 四” 、 “fri 五” 、 “sat 六” 。 2)方法 calendarpad()是构造方法,用来创建 calendarpad 对
31、象。 setshowdaytextfield(jtextfield)方法负责设置 showday 数组。 设计总说明 - 15 - setcalendarmessage(calendarmessage)方法负责设置 calendarmessage 对象。 showmonthcalendar()方法负责显示“日历” 。 详细代码:详细代码: import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class calendarpad extends jpanel int
32、 year,month,day; calendarmessage calendarmessage; jtextfield showday; jlabel title ; string 星期=sun 日,mon 一,tue 二,wed 三,thu 四,fri 五,sat 六; jpanel north,center; public calendarpad() setlayout(new borderlayout(); north=new jpanel(); north.setlayout(new gridlayout(1,7); center=new jpanel(); center.setla
33、yout(new gridlayout(6,7); add(center,borderlayout.center); add(north,borderlayout.north); title=new jlabel7; for(int j=0;j7;j+) titlej=new jlabel(); titlej.setfont(new font(timesroman,font.bold,12); titlej.settext(星期j); titlej.sethorizontalalignment(jlabel.center); titlej.setborder(borderfactory.cre
34、ateraisedbevelborder(); north.add(titlej); title0.setforeground(color.red); title6.setforeground(color.blue); public void setshowdaytextfield(jtextfield text) showday=text; for(int i=0;ishowday.length;i+) showdayi.setfont(new font(timesroman,font.bold,15); showdayi.sethorizontalalignment(jtextfield.
35、center); showdayi.seteditable(false); center.add(showdayi); 设计总说明 - 16 - public void setcalendarmessage(calendarmessage calendarmessage) this.calendarmessage=calendarmessage; public void showmonthcalendar() string a=calendarmessage.getmonthcalendar(); for(int i=0;i42;i+) showdayi.settext(ai); valida
36、te(); (4 4)notepadnotepad 类类 notepad 类 javax.swing 包中的 jpanel 容器的子类,实现了 actionlistener 接口,所创建 的对象:notepad 是 minegame calendarwindow 类中的重要成员之一,作为一个容器添 加到 calendarwindow 窗口的右上侧以,下是该类的有关说明: 1)成员变量 text 是 jtextarea 创建的文本区,可在 text 中编译多行文本。 showmessage 是 jtextfield 创建的文本条,用来显示和日期相关的数据。 menu 是 jpopupmenu 创
37、建的弹出式菜单。 itemcopy、itemcut、itempaste、itemclear 是 jmenuitem 创建的菜单项,名字 依次是“复制”, “剪切”, “黏贴”, “清空”。 2)方法 notepad()构造方法,用来创建 notepad 对象。 setshowmessage(int,int,int)方法根据参数指定的日期数据显示有关日期信 息。 save(file,int,int,int)方法根据参数指定日期保存日志 delete(file,int,int,int) 用于删除日志 read(file,int,int, int)用于读取日志。 详细代码:详细代码: import
38、java.awt.*; import javax.swing.*; import java.io.*; import java.awt.event.*; public class notepad extends jpanel implements actionlistener jtextarea text; jtextfield showmessage; jpopupmenu menu; jmenuitem itemcopy,itemcut,itempaste,itemclear; public notepad() 设计总说明 - 17 - showmessage=new jtextfield
39、(); showmessage.sethorizontalalignment(jtextfield.center); showmessage.setfont(new font(timesroman,font.bold,16); showmessage.setforeground(color.blue); showmessage.setbackground(color.pink); showmessage.setborder(borderfactory.createraisedbevelborder(); showmessage.seteditable(false); menu =new jpo
40、pupmenu(); itemcopy=new jmenuitem(复制); itemcut=new jmenuitem(剪切); itempaste=new jmenuitem(粘贴); itemclear=new jmenuitem(清空); itemcopy.addactionlistener(this); itemcut.addactionlistener(this); itempaste.addactionlistener(this); itemclear.addactionlistener(this); menu.add(itemcopy); menu.add(itemcut);
41、menu.add(itempaste); menu.add(itemclear); text=new jtextarea(10,10); text.addmouselistener(new mouseadapter() public void mousepressed(mouseevent e) if(e.getmodifiers()=inputevent.button3_mask) menu.show(text,e.getx(),e.gety(); ); setlayout(new borderlayout(); add(showmessage,borderlayout.north); ad
42、d(new jscrollpane(text),borderlayout.center); public void setshowmessage(int year,int month, int day) showmessage.settext(+year+年+month+月+day+日); public void save(file dir,int year,int month,int day) string dailycontent=text.gettext(); string filename=+year+month+day+.txt; string key=+year+month+day
43、; string dayfile=dir.list(); boolean boo=false; for(int k=0;kdayfile.length;k+) if(dayfilek.startswith(key) boo=true; 设计总说明 - 18 - break; if(boo) string m=+year+年+month+月+day+已有日志,将新内容添加到日志吗?; int ok=joptionpane.showconfirmdialog(this, m, 询问, joptionpane.yes_no_option, joptionpane.question_message);
44、 if(ok=joptionpane.yes_option) try file f=new file(dir,filename); randomaccessfile out=new randomaccessfile(f,rw); long fileend=out.length(); byte bb=dailycontent.getbytes(); out.seek(fileend); out.write(bb); out.close(); catch(ioexception exp) else string m=+year+年+month+月+day+还没有日志,保存日志吗?; int ok=
45、joptionpane.showconfirmdialog(this, m, 询问,joptionpane.yes_no_option, joptionpane.question_message); if(ok=joptionpane.yes_option) try file f=new file(dir,filename); randomaccessfile out= new randomaccessfile(f,rw); long fileend=out.length(); byte bb=dailycontent.getbytes(); out.write(bb); out.close(
46、); catch(ioexception exp) public void delete(file dir,int year,int month,int day) string key =+year+month+day; string dayfile=dir.list(); boolean boo=false; for(int k=0;kdayfile.length;k+) if(dayfilek.startswith(key) 设计总说明 - 19 - boo=true; break; if(boo) string m=删除+year+年+month+月+day+日的日志吗?; int ok
47、=joptionpane.showconfirmdialog(this,m,询问 ,joptionpane.yes_no_option,joptionpane.question_message); if(ok=joptionpane.yes_option) string filename=+year+month+day+.txt; file deletefile=new file(dir,filename); deletefile.delete(); else string m=+year+年+month+月+day+无日志记录; joptionpane.showmessagedialog(t
48、his,m,提示,joptionpane.warning_message); public void read(file dir,int year,int month,int day) string filename=+year+month+day+.txt; string key=+year+month+day; string dayfile=dir.list(); boolean boo=false; for(int k=0;kdayfile.length;k+) if(dayfilek.startswith(key) boo=true; break; if(boo) string m=+
49、year+年+month+月+day+有日志,显示日志内容吗?; int ok=joptionpane.showconfirmdialog(this,m,询问 ,joptionpane.yes_no_option,joptionpane.question_message); if(ok=joptionpane.yes_option) text.settext(null); try file f=new file(dir,filename); filereader inone=new filereader(f); bufferedreader intwo=new bufferedreader(i
50、none); string s=null; while (s=intwo.readline()!=null) text.append(s+n); 设计总说明 - 20 - inone.close(); intwo.close(); catch(ioexception exp) else string m=+year+年+month+月+day+无日志记录; joptionpane.showmessagedialog(this,m,提示,joptionpane.warning_message); public void actionperformed(actionevent e) if(e.ge
51、tsource()=itemcopy) text.copy(); else if(e.getsource()=itemcut) text.cut(); else if(e.getsource()=itempaste) text.paste(); else if(e.getsource()=itemclear) text.settext(null); (5)calendarimage 类类 calendarimage 创建的对象负责绘制图像 calendarimage 类是 javax.swing 包中 jpanel 容器的一个子类,创建的对象 calendarmessage 是 calenda
52、rwindow 类的成员之一,负责绘制图像,作为一个容器添加 到 calendarwindow 窗口的左下侧,以下是该类的有关说明: 1)成员变量 imagefile 是 file 对象,用来存放图像文件的引用 image 是 image 对象 tool 是 tookit 对象,负责创建 image 对象 2)方法 calendarimage()是构造方法,负责创建 calendarimage 对象 setimagefile(file)方法负责设置 imagefile 对象,并根据 imagefile 创建 image paintcomponent(griphics)方法负责绘制 image
53、详细代码:详细代码: import javax.swing.*; 设计总说明 - 21 - import java.io.*; import java.awt.*; public class calendarimage extends jpanel file imagefile; image image; toolkit tool; calendarimage() tool = gettoolkit(); public void setimagefile(file f) imagefile = f; try image = tool.getimage(imagefile.touri().tou
54、rl(); catch (exception e) repaint(); public void paintcomponent(graphics g) super.paintcomponent(g); int w = getbounds().width; int h = getbounds().height; g.drawimage(image,0,0,w,h,this); (6 6)clockclock 类类 clock 类是 javax.swing 包中 jpanel 容器的子类,并实现了 actionlistener 接口,所创建 的对像:clock 是 calendarwindow 类
55、中的成员之一,负责显示时间,被添加到 calendarwindow 窗口的右下侧,以下是该类的有关说明: 1) 成员变量 date 是 date 对像,负责封装本地时间 secondtime 是 javax.swing 包中 timer 类创建的计时 hour,minute 和 second 是 int 型数据,分别飞“小时” , “分钟”和“秒” 设计总说明 - 22 - secondline,minuteline 和 hourline 是 lint2d 对象,分别负责绘制“时针” , “分针” , “秒针” pointsx,pointsy 是 double 型数组,其单元值用来表示秒针端点
56、的坐标 pointmx,pointmy 是 double 型数组,其单元值用来表示分针端点坐标 pointhx,pointhy 是 double 型数组,其单元值用来便是时针端点坐标 2) 方法 clock()是构造方法,用来创建 clock 对象 initpoint()负责创建表盘所需要的坐标点 paintcomponent(graphics)负责完成绘制工作 actionperformed(actionevent)是接口 actionlistener 中的方法。使用 timer 类 的构造方法:timer(int a ,object b )创建一个计时器,其中的参数 a 的单 位是毫秒,确
57、定计时器每隔 a 毫秒“振铃”一次,参数 b 是计时器的监视器。 计时器发生的振铃时件是 actionevent 类型时件,当振铃时间发生时,监视器 就会监视到这个事件,监视器就会回调用 actionlistener 接口中的 actionperformed(actionevent)方法,该方法所做的操作是:每隔 1 秒钟,让秒 针前进一个刻度,既 secondline 改变端点坐标;每隔 1 分钟,让分针前进一个 刻度(表盘一周为 360,每个时刻为 6) ,既 muniteline 改变端点坐标;每 隔 12 分钟,让时针前进一个刻度,既 hourline 改变端点坐标。 详细代码:详细代
58、码: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.*; import java.util.*; public class clock extends jpanel implements actionlistener date date; javax.swing.timer secondtime; int hour,munite,second; line2d secondline,muniteline,hourline; int a,b,c,width,height;
59、 double pointsx = new double60, pointsy = new double60, pointmx = new double60, pointmy = new double60, pointhx = new double60, pointhy = new double60; clock() 设计总说明 - 23 - setbackground(color.cyan); initpoint(); secondtime = new javax.swing.timer(1000,this); secondline = new line2d.double(0,0,0,0);
60、 muniteline = new line2d.double(0,0,0,0); hourline = new line2d.double(0,0,0,0); secondtime.start(); private void initpoint() width = getbounds().width; height = getbounds().height; pointsx0 = 0; pointsy0 = -(height/2*5/6); pointmx0 = 0; pointmy0 = -(height/2*4/5); pointhx0 = 0; pointhy0 = -(height/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 皮革服装生产设备管理考核试卷
- 中庸之道:被误解千年的处世智慧及其在现代社会的应用
- 2025宠物猫买卖合同范本
- 2025员工劳动合同范本协议书模板
- 2025年自然人借款合同的定义和生效时间
- 2025跨国租赁合同示范文本
- 2025医疗器械采购招标合同模板
- DB3301T 0478-2024义警管理规范
- 2025汽车买卖合同书参考模板
- 苏州市初中物理教师实验技能培训教材
- 《质量成本培训教材》课件
- 人教版-八年级数学上册-竞赛专题分式方程(含答案)
- DB31∕723-2019 铝塑复合板单位产品能源消耗限额
- 【MOOC】宋词经典-浙江大学 中国大学慕课MOOC答案
- 公司内部审计制度模版(2篇)
- Charlson合并症指数诊断ICD-10编码表
- GB/T 22671-2024外转子电动机试验方法
- 联通新员工培训
- 新版加油站全员安全生产责任制
- 2025年日历表(A4版含农历可编辑)
- GB/T 3045-2024普通磨料碳化硅化学分析方法
评论
0/150
提交评论