您的位置:首页 > 编程语言 > Java开发

java学习第三天(程序有点小问题,明天再修改)

2014-05-29 00:00 369 查看
摘要: java多媒体技术
一个时钟的动画

import java.applet.*;
import java.util.*;
import java.awt.*;
import java.text.*;
public class Class extends Applet implements Runnable{
private volatile Thread timer;//显示时钟的线程
private int lastxs,lastys,lastxm,lastym,lastxh,lastyh;//表针的坐标
private SimpleDateFormat formatter;//格式化日期数据
private String lastdate;//保存日期数据的字符串
private Font clockFaceFont;//时钟里面的数字的字体
private Date currentDate;//当前日期
private Color handColor;//时针、分针和表盘的颜色
private Color numberColor;//秒针和数字的颜色
private int xcenter=80,ycenter=55;//中心位置
public void init()
{
int x,y;
lastxs=lastys=lastxm=lastym=lastxh=lastyh=0;
SimpleDateFormat 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);//设置时钟窗口大小
}

//绘制时钟主要部件
public void update(Graphics g)
{
int xh,yh,xm,ym,xs,ys;
int s=0,m=10,h=10;
String today;
currentDate=new Date();
formatter.applyPattern("s");
try{
s=Integer.parseInt(formatter.format(currentDate));
}catch(NumberFormatException n){
s=0;
}
formatter.applyPattern("m");
try{
m=Integer.parseInt(formatter.format(currentDate));
}catch(NumberFormatException n){
m=10;
}
formatter.applyPattern("h");
try{
h=Integer.parseInt(formatter.format(currentDate));
}catch(NumberFormatException n){
h=10;
}

//设置表针的前端位置
xs=(int)(Math.cos(s*Math.PI/30-Math.PI/2)*45+xcenter);
ys=(int)(Math.sin(s*Math.PI/30-Math.PI/2)*45+ycenter);
xm=(int)(Math.cos(m*Math.PI/30-Math.PI/2)*40+xcenter);
ym=(int)(Math.sin(m*Math.PI/30-Math.PI/2)*40+ycenter);
xh=(int)(Math.cos((h*30+m/2)*Math.PI/180-Math.PI/2)*30+xcenter);
yh=(int)(Math.sin((h*30+m/2)*Math.PI/180-Math.PI/2)*30+ycenter);

//获得显示在底部的日期数据
formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy");
today=formatter.format(currentDate);

g.setFont(clockFaceFont);
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(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;
lastxs=xh;lastys=yh;
lastdate=today;
currentDate=null;
}

public void paint(Graphics g)
{
g.setFont(clockFaceFont);
//绘制圆和数字
g.setColor(handColor);
g.drawArc(xcenter-50, ycenter-50, 100, 100, 0, 360);
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(numberColor);
g.drawString(lastdate, 5, 125);
g.drawLine(xcenter, ycenter, lastxs, lastys);
g.setColor(handColor);
g.drawLine(xcenter, ycenter-1, lastxm, lastym);
g.drawLine(xcenter-1, ycenter, lastxm, lastym);
g.drawLine(xcenter, ycenter-1, lastxh, lastyh);
g.drawLine(xcenter-1, ycenter, lastxh, lastyh);
}
public void start()
{
timer=new Thread(this);
timer.start();
}
public void stop()
{
timer=null;
}
public void run()
{
Thread me=Thread.currentThread();
while(timer==me){
try{
Thread.currentThread().sleep(100);
}catch(InterruptedException e){

}
repaint();
}
}

public String getAppletInfo()
{
return "Title: A Clock \n";
}

public String[][] getParameterInfo()
{
String[][] info={
{"bgcolor","hexadecimal RGB number",
"The background color.Default is the color of your browser."
},
{"fgcolor1","hexadecimal RGB number",
"The color of the hands and dial.Default is blue."
},
{"fgcolor2","hexadecimal RGB number",
"The color of the second hand and numbers.Default is darkgray."
}
};
return info;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: