import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
class Clock extends JPanel implements ActionListener
{
private int hour;
private int minute;
private int second;
Clock()
{
Timer timer=new Timer(1000,this);
timer.start();
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
setCurrentTime();
int clockRadius=(int)(Math.min(getWidth(),getHeight()*0.4));
int xCenter=getWidth()/2;
int yCenter=getHeight()/2;
//画时间刻度盘
g.drawOval(xCenter-clockRadius,yCenter-clockRadius,2*clockRadius,2*clockRadius);
g.drawString("12", xCenter-5 , yCenter-clockRadius+12);
g.drawString("9", xCenter-clockRadius+3, yCenter+5);
g.drawString("3",xCenter+clockRadius-10,yCenter+3);
g.drawString("6",xCenter-3,yCenter+clockRadius-3);
//画秒针
int sLength=(int)(clockRadius*0.8);
int xSecond=(int)(xCenter+sLength*1);
int ySecond=(int)(yCenter-sLength*0);
// int xSecond=(int)(xCenter+sLength*Math.sin(15*6));
//int ySecond=(int)(yCenter-sLength*Math.cos(15*6));
g.setColor(Color.RED);
g.drawLine(xCenter, yCenter, xSecond, ySecond);
}
public void actionPerformed(ActionEvent e)
{
repaint();
}
public void setCurrentTime()
{
Calendar cal=new GregorianCalendar();
this.hour=cal.get(Calendar.HOUR_OF_DAY);
this.minute=cal.get(Calendar.MINUTE);
this.second=cal.get(Calendar.SECOND);
}
}
public class Example9_11 extends JFrame{
Example9_11()
{
Clock clock=new Clock();
this.add(clock);
}
public static void main(String[] args)
{
Example9_11 f=new Example9_11();
f.setTitle("时钟");
f.setSize(300,250);
f.setLocation(400,300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
运行结果是
但把
int xSecond=(int)(xCenter+sLength*1);
int ySecond=(int)(yCenter-sLength*0);
// int xSecond=(int)(xCenter+sLength*Math.sin(15*6));
//int ySecond=(int)(yCenter-sLength*Math.cos(15*6));
上面两句注销,下面两句的注销删掉
//int xSecond=(int)(xCenter+sLength*1);
// int ySecond=(int)(yCenter-sLength*0);
int xSecond=(int)(xCenter+sLength*Math.sin(15*6));
int ySecond=(int)(yCenter-sLength*Math.cos(15*6));
结果又是
Math.sin(15*6)不等于1吗
Math.cos(15*6)不等于0吗