第五周作业--时钟表
来源:互联网 发布:怎样知道dns域名 编辑:程序博客网 时间:2024/06/05 16:22
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设计时钟窗口大小
}
//计算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-y,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);
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,tcenter)半径为50
g.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!=lastym){
g.drawLine(xcenter,ycenter-1,lastxh,lastyh);
g.drawLine(xcenter-1,ycenter,lastxh,lastyh);}
g.setColor(handColor);
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);
lastxh=xs;lastyh=ys;
lastxm=xm;lastyh=ym;
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);
}
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设计时钟窗口大小
}
//计算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-y,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);
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,tcenter)半径为50
g.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!=lastym){
g.drawLine(xcenter,ycenter-1,lastxh,lastyh);
g.drawLine(xcenter-1,ycenter,lastxh,lastyh);}
g.setColor(handColor);
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);
lastxh=xs;lastyh=ys;
lastxm=xm;lastyh=ym;
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);
}
}
0 0
- 第五周作业--时钟表
- 第五周 时钟1
- 第五周作业,图的邻接表
- 第五周作业
- 第五周作业
- 第五周作业 2
- 第五周作业 3
- 第五周作业 1
- 第五周作业1
- 第五周作业2
- 第五周作业3
- 第五周作业
- 第五周作业
- 第五周C++作业
- Java第五周作业
- 第五周作业
- 第五周作业
- 第五周的作业
- java abstract类 和 interface
- 改善小孩IQ的四种方式[图]
- Android页面布局时定义控件ID时@id/XX和@+id/xx 有什么区别
- 观察者模式理解
- 最长公共子序列-DP
- 第五周作业--时钟表
- C++模板编程->分辨重载优先级
- struts-convention零配置--约定大于配置
- 微软网络公开课 《揭秘云计算与移动互联网时代下的Web API》4月6号晚9点!
- SeedCoder2014热身题9:解答
- photoshop lab模式
- cocos2dx学习之javascript(0.1)运行例程
- poj 2739 Sum of Consecutive Prime Numbers
- SeedCoder2014热身题10:消失之物