练手:例9-17
来源:互联网 发布:淘宝网的ip地址是什么 编辑:程序博客网 时间:2024/05/16 17:33
程序练手
本程序为练手作品,为课本例子9-17 ClockDemo.java,一个时钟的动画程序。
import java.util.*;import java.awt.*;import java.applet.*;import java.text.*;public class ClockDemo extends Applet implements Runnable{Thread timer;int lastxs,lastys,lastxm,lastym,lastxh,lastyh;SimpleDateFormat fm;String lastdate;Font clockFaceFont;Date currentDate;Color handColor;Color numberColor;public void init(){int x,y;lastxs=lastys=lastxm=lastym=lastxh=lastyh=0;fm= new SimpleDateFormat("yyyy EEE MMM dd hh:mm:ss");currentDate=new Date();lastdate=fm.format(currentDate);clockFaceFont=new Font("Serif",Font.PLAIN,14);handColor=Color.blue;numberColor=Color.darkGray;try{setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),16))); }catch(Exception E){}try{handColor=new Color (Integer.parseInt(getParameter("fgcolor1"),16));}catch(Exception E){ }try{numberColor=new Color(Integer.parseInt(getParameter("fgcolor2"),16));}catch(Exception E){}resize(300,300);//设置时钟窗口大小}//计算1/4的圆弧public void plotpoints(int x0,int y0, int x,int y,Graphics g){g.drawLine(x0+x, y0+y, x0+x, y0+y);g.drawLine(x0+y, y0+x, x0+y, y0+x);g.drawLine(x0+y, y0-x, x0+y, y0-x);g.drawLine(x0+x, y0-y, x0+x, y0-y);g.drawLine(x0-x, y0-y, x0-x, y0-y);g.drawLine(x0-y, y0-x, x0-y, y0-x);g.drawLine(x0-y, y0+x, x0-y, y0+x);g.drawLine(x0-x, y0+y, x0-x, y0+y);}//用Bresenham算法来画圆,其中(x0,y0)是圆的中心,r是半径public void circle(int x0,int y0,int r,Graphics g){ int x,y; float d; x=0; y=r; d=5/4-r; plotpoints(x0,y0,x,y,g); while(y>x){ if(d<0){ d=d+2*x+3; x++; } else{ d=d+2*(x-y)+5; x++; y--; } plotpoints(x0,y0,x,y,g); }}public void paint(Graphics g){int xh,yh,xm,ym,xs,ys,s=0,m=10,h=10,xcenter,ycenter;String today;currentDate=new Date();SimpleDateFormat fm=new SimpleDateFormat("s",Locale.getDefault());try{s=Integer.parseInt(fm.format(currentDate));}catch(NumberFormatException n){s=0;}fm.applyPattern("m");try{m=Integer.parseInt(fm.format(currentDate)); }catch(NumberFormatException n){m=10;}fm.applyPattern("h");try{h=Integer.parseInt(fm.format(currentDate)); }catch(NumberFormatException n){h=10; }fm.applyPattern("EEE MMM dd HH:mm:ss yyyy");today=fm.format(currentDate);//设置时钟的表盘的原点为(80,55)xcenter=80;ycenter=55;xs=(int)(Math.cos(s*3.14f/30-3.14f/2)*45+xcenter);ys=(int)(Math.sin(s*3.14f/30-3.14f/2)*45+ycenter);xm=(int)(Math.cos(m*3.14f/30-3.14f/2)*40+xcenter);ym=(int)(Math.sin(m*3.14f/30-3.14f/2)*40+ycenter);xh=(int)(Math.cos((h*30+m/2)*3.14f/180-3.14f/2)*30+xcenter);yh=(int)(Math.sin((h*30+m/2)*3.14f/180-3.14f/2)*30+ycenter);//画时钟最外面的圆盘其中心在(xcenter,ycenter)半径为50g.setFont(clockFaceFont);g.setColor(handColor);circle(xcenter,ycenter,50,g);//画时钟表盘里的数字g.setColor(numberColor);g.drawString("9",xcenter-45,ycenter+3);g.drawString("3",xcenter+40,ycenter+3);g.drawString("12",xcenter-5,ycenter-37);g.drawString("6",xcenter-3,ycenter+45);//如果必要的话抹去重画g.setColor(getBackground());if(xs!=lastxs||ys!=lastys){g.drawLine(xcenter,ycenter,lastxs,lastys);g.drawString(lastdate,5,125);}if(xm!=lastxm || ym!=lastym){g.drawLine(xcenter,ycenter-1,lastxm,lastym);g.drawLine(xcenter-1,ycenter,lastxm,lastym);}if(xh!=lastxh||yh!=lastyh){g.drawLine(xcenter,ycenter-1,lastxh,lastyh);g.drawLine(xcenter-1,ycenter,lastxh,lastyh);}g.setColor(numberColor);g.drawString("",5,125);g.drawString(today,5,125);g.drawLine(xcenter,ycenter,xs,ys);g.setColor(handColor);g.drawLine(xcenter, ycenter-1,xm,ym);g.drawLine(xcenter-1,ycenter,xm,ym);g.drawLine(xcenter, ycenter-1,xh,yh);g.drawLine(xcenter-1,ycenter,xh,yh);lastxs=xs;lastys=ys;lastxm=xm;lastym=ym;lastxh=xh;lastyh=yh;lastdate=today;currentDate=null;}//applet的启动方法public void start(){timer=new Thread(this);timer.start();}//applet的停止方法public void stop(){timer=null;}//线程的run方法public void run(){Thread me=Thread.currentThread();while(timer==me){try{Thread.currentThread().sleep(1000);}catch(InterruptedException e){}repaint();}}//注意:这里重写了update()方法,只是调用了paint()方法来消除闪烁现象public void update(Graphics g){paint(g);}}
我还按照课本的建立Html文件,不过运行不了,都是因为Java有漏洞,限制了java插件,按照网上的提示做了,没有改变。暂且搁下了
下图为运行结果:
0 0
- 练手:例9-17
- 练手
- 练手
- 练手~~~
- 练手
- 练手、练手
- 练手程序2006-9-9
- 练手程序2006-9-8
- 练手程序2006-9-7
- 练手程序2006-9-10改进
- ssm练手(CRUD) 9、实现删除功能
- java初学基础班经典练手小程序300例
- Kotlin练手,以登录为例,Anko简单使用
- 练手2
- 小练手
- 新手练手
- JQuery练手
- 纯属练手
- 《你正常吗》华少舌战柳岩 断言黄海波被黑
- 印度候任总理莫迪夫人曝光:结婚45年只相处3月
- poj 1451 || hdu 1298 T9
- BroadCastReceiver 用法
- 数据的标准化
- 练手:例9-17
- 微信国际化三大缺点:商场开发战略不合理
- linux--硬盘大小--Linux系统下查看目录大小
- Java与XML联合编程之SAX篇
- Drawable、Bitmap、Canvas和Paint的区别
- WritePrivateProfileString等读写.ini配置文件
- APK安装过程及原理详解
- 在发布站点前,Web开发者需要关注哪些技术细节?
- linux 环境变量详解