我帮你稍微改了一下,好像可以了,你看看
你是g.drawLine没有对。
(int)(Math.cos(hourAngle))是恒等于0的。不会产生变化。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.geom.*;
import javax.swing.Timer;
public class ClockStart
{
public static void main(String args[])
{
ClockFrame frame=new ClockFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class ClockFrame extends JFrame
{
public ClockFrame()
{
setSize(450,300);
setTitle("Clock");
ClockPanel panel=new ClockPanel();
getContentPane().add(panel);
}
}
class ClockPanel extends JPanel
{
private GregorianCalendar calendar;
        int i=0;
public ClockPanel()
{
calendar=new GregorianCalendar(TimeZone.getTimeZone("Asia/Taipei"));
ActionListener listener=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
calendar.setTime(new Date());
repaint();
}
};
Timer t=new Timer(100,listener);
t.start();
setSize(450,300);
}
        public void paint(Graphics g)
        {
                super.paintComponent(g);
                g.drawOval(0,0,250,250);
int seconds=calendar.get(Calendar.HOUR)*60*60+calendar.get(Calendar.MINUTE)*60+calendar.get(Calendar.SECOND);
double hourAngle=2*Math.PI*(seconds-3*60*60)/(12*60*60);
double minuteAngle=2*Math.PI*(seconds-15*60)/(60*60);
double secondAngle=2*Math.PI*(seconds-15)/60;
g.drawLine(125,125,125+(int)(30.0*(Math.cos(hourAngle))),125+(int)(30.0*(Math.sin(hourAngle))));
g.drawLine(125,125,125+(int)(35.0*(Math.cos(minuteAngle))),125+(int)(35.0*(Math.sin(minuteAngle))));
g.drawLine(125,125,125+(int)(45.0*(Math.cos(secondAngle))),125+(int)(45.0*(Math.sin(secondAngle))));        }
}