第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); } }
相关文章推荐
- 第5周作业-时钟动画程序(15-9)
- 第5周作业-时钟动画程序
- 第5周作业-时钟动画程序
- 15 电气 郄慧敏 vb 作业 循环程序计算10个随机数的和
- 单片机时钟程序(10)timing.c
- 9-15考试题目程序作业
- python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)
- 第5周作业-打字成绩判断程序(双版本)
- 第5周作业-打字成绩判断程序GUI
- 第5周作业-打字成绩判断程序TouchType
- 背水一战 Windows 10 (15) - 动画: 缓动动画
- 背水一战 Windows 10 (15) - 动画: 缓动动画
- 第5周作业-打字成绩判断程序
- 第5周作业-打字成绩判断程序GUI(未完成)
- 第5周作业-贷款计算器程序
- 第5周作业-贷款计算器程序
- 第5周作业-打字成绩判断程序
- 单片机时钟程序(10)timing.c
- 第5周作业-时钟动画程序
- 第5周作业-贷款计算器程序