📄 stillclock.java
字号:
package view.com.systime;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JPanel;
/**
* 创建静止时钟对象
* @author linfeng
*
*/
public class StillClock extends JPanel{
/**
* hour 时
* minute 分
* second 秒
*/
private int hour;
private int minute;
private int second;
/**
* 构造StillClock对象
* @param hour 时
* @param minute 分
* @param second 秒
*/
public StillClock(int hour, int minute, int second) {
super();
this.hour = hour;
this.minute = minute;
this.second = second;
}
/**
* 设定预定时间
*/
public StillClock(){
setCurrentTime();
}
/**
* 获得时钟
* @return hour 时钟
*/
public int getHour() {
return hour;
}
/**
* 设置时钟
* @param hour 时钟
*/
public void setHour(int hour) {
this.hour = hour;
repaint();
}
/**
* 获得分钟
* @return minute 分钟
*/
public int getMinute() {
return minute;
}
/**
* 设置分钟
* @param minute 分钟
*/
public void setMinute(int minute) {
this.minute = minute;
repaint();
}
/**
* 获得秒钟
* @return second 秒钟
*/
public int getSecond() {
return second;
}
/**
* 设置秒钟
* @param second 秒钟
*/
public void setSecond(int second) {
this.second = second;
repaint();
}
/**
* 画时钟,让时钟显示在屏幕上
*/
protected void paintComponent(Graphics g){
super.paintComponent(g);
//初始化时钟各参数
int clockRadius = (int)(Math.min(getWidth()*0.7, 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.GRAY);
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-sLength*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);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -