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;
 }
}

你可能感兴趣的:(java学习第三天(程序有点小问题,明天再修改))