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) {}
}
}
}
}
写一个绘制时钟的类,但是上面红颜色的两行代码,显示没有构造器,麻烦大家帮我看看吧,谢谢
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) {}
}
}
}
}
写一个绘制时钟的类,但是上面红颜色的两行代码,显示没有构造器,麻烦大家帮我看看吧,谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货