⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stillclock.java

📁 好的超市源码供大家下载
💻 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 + -