import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import java.io.*;
import javax.swing.Timer.*;
import java.awt.geom.*;
import java.net.*;
import java.applet.*;
import java.util.Timer;public class Clock extends Canvas implements ActionListener  //刻画时钟
{  
    Date date;
    Timer secondtime;
    int hour,minute,second;
    int a,b,c;
    Line2D hourline,minuteline,secondline;
    URL url;
    AudioClip clip;
    double piontSX[] = new double[60];   //表示秒钟端点坐标
    double piontSY[] = new double[60];
    double piontMX[] = new double[60];
    double piontMY[] = new double[60];
    double piontHX[] = new double[60];
    double piontHY[] = new double[60];
    Clock()
    {
        secondtime = new Timer(1000,this);
        piontSX[0] = 0;           //12点秒针坐标
        piontSY[0] = -100;
        piontMX[0] = 0;
        piontMY[0] = -90;
        piontHX[0] = 0;
        piontHY[0] = -70;
        double angle = 6 * Math.PI / 180;
        for(int i = 0;i < 59;i ++)    //计算出各数组中的坐标
        {
            piontSX[i + 1] = piontSX[i] * Math.cos(angle) - Math.sin(angle) * piontSY[i];
            piontSY[i + 1] = piontSY[i] * Math.cos(angle) + piontSX[i] * Math.sin(angle);
            piontMX[i + 1] = piontMX[i] * Math.cos(angle) - Math.sin(angle) * piontMY[i];
            piontMY[i + 1] = piontMY[i] * Math.cos(angle) + piontMX[i] * Math.sin(angle);
            piontHX[i + 1] = piontHX[i] * Math.cos(angle) - Math.sin(angle) * piontHY[i];
            piontHY[i + 1] = piontHY[i] * Math.cos(angle) + piontHX[i] * Math.sin(angle);
        }
        for(int i = 0;i < 60;i ++)   //坐标平移
        {
            piontSX[i] = piontSX[i] + 120;
            piontSY[i] = piontSY[i] + 120;
            piontMX[i] = piontMX[i] + 120;
            piontMX[i] = piontMX[i] + 120;
            piontHX[i] = piontHX[i] + 120;
            piontHX[i] = piontHX[i] + 120;
        }
        secondline = new Line2D.Double(0,0,0,0);
        minuteline = new Line2D.Double(0,0,0,0);
        hourline = new Line2D.Double(0,0,0,0);
        secondtime.start();
    }
    
    public void paint(Graphics g)
    {
        for(int i = 0;i < 60;i ++)
        {
            int m = (int)piontSX[i];
            int n = (int)piontSY[i];
            if(i % 5 == 0)
            {
                g.setColor(Color.red);
                g.fillOval(m - 4, n - 4, 8, 8);
            }
            else
            {
                g.setColor(Color.cyan);
                g.fillOval(m - 2 , n - 2, 4, 4);
            }
        }
        g.fillOval(115,115,10,10);
        Graphics2D g_2d = (Graphics2D)g;    //刻画秒针
        g_2d.setColor(Color.red);
        g_2d.draw(secondline);
        //刻画分针
        BasicStroke bs = new BasicStroke(3f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);
        g_2d.setStroke(bs);
        g_2d.setColor(Color.blue);
        g_2d.draw(minuteline);
        bs = new BasicStroke(6f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);
        g_2d.setStroke(bs);
        g_2d.setColor(Color.green);
        g_2d.draw(hourline);
     }
     public void actionPerformed(ActionEvent e)
     {
         if(e.getSource() == secondtime)
         {
             date = new Date();
             String s = date.toString();
             hour = Integer.parseInt(s.substring(11, 13));
             minute = Integer.parseInt(s.substring(14, 16));
             second = Integer.parseInt(s.substring(17, 19));
             int h = hour % 12;
             a = second;
             b = minute;
             c = h * 5 + minute / 12;
             secondline.setLine(120,120,(int)piontSX[a],(int)piontSY[a]);
             minuteline.setLine(120,120,(int)piontMX[b],(int)piontMY[b]);
             hourline.setLine(120,120,(int)piontHX[c],(int)piontHY[c]);
             repaint();
             if(minute == 0 && second == 0)
             {
                 try
                 {
                     File musicFile = new File("孙欣-转身之间(钢琴版).mp3");
                     url = musicFile.toURL();
                     clip = Applet.newAudioClip(url);
                     clip.play();
                 }
                 catch(Exception ex) {}
             }
         }
     }
}
写一个绘制时钟的类,但是上面红颜色的两行代码,显示没有构造器,麻烦大家帮我看看吧,谢谢