我就是给闹钟的 分秒时算的时候,老是把分秒时的针的长度画不好,
画的钟那个院的半径是120;
drawLine(200,200,x,y) ,
这个XY总是算不好;
随能给点好的思路!!
另外还需要问问怎么能 简单 是把刚画的东西,马上差掉,
谢谢大家帮忙了
import java.applet.Applet;
import java.awt.*;
import java.util.*;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class Clock extends Applet implements Runnable
{
Thread thisThread;
Color faceColor, borderColor, minuteColor, hourColor, secondColor;
Calendar d;
public void init()
{
//read in the colors for each of the hands and for the face/border
faceColor = readColor(getParameter("faceCol"));
borderColor = readColor(getParameter("borderCol"));
minuteColor = readColor(getParameter("minuteCol"));
hourColor = readColor(getParameter("hourCol"));
secondColor = readColor(getParameter("secondCol"));
}
// This method creates a color based on a string.
// The string is assumed to be "red, green, blue" where each
// of the colors is represented by its integer equivalent.
public Color readColor(String aColor)
{
if(aColor == null)
return Color.black;
int r, g, b;
//break the string apart into each number
StringTokenizer st = new StringTokenizer(aColor, ",");
try
{
r = Integer.valueOf(st.nextToken()).intValue();
g = Integer.valueOf(st.nextToken()).intValue();
b = Integer.valueOf(st.nextToken()).intValue();
return new Color(r,g,b);
}
catch(Exception e)
{
System.out.println("An exception occurred trying to convert a parameter to a color:" + e);
return Color.black;
}
}
public String getParameter(String name)
{
String ST;
if(inApplet)
return super.getParameter(name);
//if you are not in an applet you default all of the values
if(name == "hourcol")
return "255,00,00";
if(name == "minuteCol")
return "00,255,00";
if(name == "secondCol")
return "00,00,255";
if(name == "borderCol")
return "255,255,255";
if(name == "faceCol")
return "125,125,125";
return null;
}
public void start()
{
thisThread = new Thread(this);
thisThread.start();
}
public void run()
{
while(true)
{
repaint();
try
{
thisThread.sleep(1000);
}catch(Exception e){}
}
}
public void update(Graphics g)
{
paint(g);
if(inApplet)
{
int uhr = d.get(Calendar.HOUR_OF_DAY);
int minute = d.get(Calendar.MINUTE);
int sec = d.get(Calendar.SECOND);
String currentTime = new String(uhr + ":" + minute + ":" + sec);
showStatus(currentTime);
}
}
public void paint(Graphics g)
{
//fill clock face
g.setColor(faceColor);
g.fillOval(0,0,100,100);
g.setColor(borderColor);
g.drawOval(0,0,100,100);
//get the current time
d = Calendar.getInstance();
//draw the minute hand
g.setColor(minuteColor);
double angle = (((double)(90 - d.get(Calendar.MINUTE)))/60)*2*Math.PI;
g.drawLine(50,50,50+(int)(Math.sin(angle)*50),50+(int)(Math.cos(angle)*50));
//draw the hour hand
g.setColor(hourColor);
angle = ((((double)18 - d.get(Calendar.HOUR_OF_DAY)+(double)d.get(Calendar.MINUTE)/60))/12)*2*Math.PI;
g.drawLine(50,50,50+(int)(Math.sin(angle)*40), 50+(int)(Math.cos(angle)*40));
//draw the second hand
g.setColor(secondColor);
angle = (((double)(90 - d.get(Calendar.SECOND)))/60)*2*Math.PI;
g.drawLine(50,50,50+(int)(Math.sin(angle)*50), 50+(int)(Math.cos(angle)*50));
}
static boolean inApplet = true;
public static void main(String args[])
{
//set a boolean flag to show if you are in an applet or not
inApplet = false;
//create a frame to place our application in
//you can change the string value to show your desired label
//for the frame
Frame myFrame = new Frame("Clock as an Application");
myFrame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent event)
{
System.exit(0);
}
});
//create a clock instance
Clock myApp = new Clock();
//add the current application to the frame
myFrame.add("Center", myApp);
//resize the frame to the desired size and make it visible
myFrame.setSize(100,130);
myFrame.show();
//run the methods the browser normally would
myApp.init();
myApp.start();
}
}