您的位置:首页 > 编程语言 > Java开发

第5周作业-时钟动画程序(15-10)

2014-04-13 14:59 323 查看
/**
* 《Java语言程序设计》P418/439 程序清单15-9,StillClock类
* xiaowei
*/

import java.awt.*;
import javax.swing.*;
import java.util.*;

public class StillClock extends JPanel
{

private int hour;
private int minute;
private int second;

/**Construct a default clock with the current time*/
public StillClock(){
setCurrentTime();

}
/**construct a clock with specified hour,minute,and second*/
public StillClock(int hour,int minute,int second){
this.hour = hour;
this.minute = minute;
this.second = second;

}
/**return hour */
public int getHour(){
return hour;

}
/**set a new hour*/
public void setHour(int hour){
this.hour = hour;
repaint();

}
/**return minute*/
public int getMinute(){
return minute;

}
/**set a new minute*/
public void setMinute(int minute){
this.minute = minute;
repaint();

}
/**return second*/
public int getSecond(){
return second;

}

/** set a new second*/
public void setSecond(int second){
this.second = second;
repaint();
}
/**draw the clock*/
protected void paintComponent(Graphics g){
super.paintComponent(g);

int clockRadius =
(int)(Math.min(getWidth(),getHeight()) * 0.8 *0.5);
int xCenter = getWidth()/2;
int yCenter = getHeight()/2;

g.setColor(Color.black);
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 *
Math.sin(second * (2*Math.PI/60)));
int ySecond = (int)(yCenter - sLength *
Math.cos(second * (2 * Math.PI/60)));
g.setColor(Color.red);
g.drawLine(xCenter, yCenter, xSecond, ySecond);

int mLength = (int)(clockRadius * 0.65);
int xMinute = (int)(xCenter + mLength *
Math.sin(minute*(2*Math.PI/60)));
int  yMinute = (int)(yCenter + mLength*
Math.cos(minute*(2*Math.PI/60)));
g.setColor(Color.blue);
g.drawLine(xCenter, yCenter, xMinute, yMinute);

int hLength = (int)(clockRadius * 0.5);
int xHour = (int)(xCenter - hLength*
Math.sin((hour%12 + minute/60.0)*(2*Math.PI/12)));
int yHour = (int)(yCenter - hLength*
Math.cos((hour%12 + minute/60.0)*(2*Math.PI/12)));
g.setColor(Color.green);
g.drawLine(xCenter, yCenter, xHour, yHour);

}

public void setCurrentTime(){

Calendar calendar = new GregorianCalendar();

this.hour = calendar.get(Calendar.HOUR_OF_DAY);
this.minute = calendar.get(Calendar.MINUTE);
this.second = calendar.get(Calendar.SECOND);
}
public Dimension getPreferredSize(){
return new Dimension(200,200);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java