




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
线程程序设计 课题内容和要求 内容:设计和编写一个编写一个指针式时钟程序,应用线程实现时钟的走动。 要求:本实验旨在通过实验,培养学生将JAVA线程的相关知识点(包括线程调度,线程同步等)有机结合并加以综合应用,在实验中设计多线程程序的能力。 二、设计思路分析 classClock:一个指针式时钟的主类 classLayout:添加窗口和时钟组件 classClockPaint:定义时钟组件 三、概要设计 publicclassClockextendsJFrame{ publicstaticvoidmain(String[]s); } classLayoutextendsJFrame{ publicLayout(); } classClockPaintextendsJPanelimplementsRunnable{ intx,y,r; inth,m,s; doublerad=Math.PI/180; publicClockPaint(intx,inty,intr); publicvoidpaint(Graphicsg); publicvoidrun(); } 时钟的绘制: 运行时钟: 四、详细设计 importjava.awt.*; importjavax.swing.*; importjava.util.*; publicclassClockextendsJFrame{ publicstaticvoidmain(String[]s){ newLayout(); } } classLayoutextendsJFrame{//添加窗口和时钟组件 publicLayout(){ ClockPaintcp=newClockPaint(20,20,70); add(cp); setBounds(260,120,200,200); setResizable(false); this.setTitle("指针式时钟"); this.setVisible(true); } } classClockPaintextendsJPanelimplementsRunnable{//定义时钟组件 intx,y,r;//时钟的位置坐标和半径 inth,m,s;//小时,分钟,秒 doublerad=Math.PI/180;//定义弧度 publicClockPaint(intx,inty,intr){//构造函数 this.x=x; this.y=y; this.r=r; Calendarnow=Calendar.getInstance();//初始化日历对象 s=now.get(Calendar.SECOND)*6;//获得初始秒转换成度数 m=now.get(Calendar.MINUTE)*6;//获得初始分钟转换成度数 h=(now.get(Calendar.HOUR_OF_DAY)-12)*30 +now.get(Calendar.MINUTE)*6/12;//获得初始小时转换成度数加分钟实现连贯 Threadt=newThread(this);//新建线程 t.start();//启动线程 } publicvoidpaint(Graphicsg){//绘制时钟 g.setColor(Color.BLACK);//画背景 g.fillRect(0,0,r*3,r*3); g.setColor(Color.WHITE);//画圆 g.drawOval(x,y,r*2,r*2); intd=0;//每6度画一个小点 intx1,y1,x2,y2; for(inti=0;i<60;i++){ x1=(int)((r-2)*Math.sin(rad*d)); y1=(int)((r-2)*Math.cos(rad*d)); g.drawString(".",x+r+x1-1,x+r-y1+1); d+=6; } d=30;//从30度开始每30度画一个数字和一线 for(inti=1;i<=12;i++){ x1=(int)((r-14)*Math.sin(rad*d)); y1=(int)((r-14)*Math.cos(rad*d)); g.drawString(i+"",x+r+x1-4,x+r-y1+5); x1=(int)((r-6)*Math.sin(rad*d)); y1=(int)((r-6)*Math.cos(rad*d)); x2=(int)((r-2)*Math.sin(rad*d));

王子****青蛙
实名认证
内容提供者


最近下载