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

📄 drawclock.java

📁 此源码为机械工业出版社出版的《Java语言程序设计》第三版所配套的书中所有源代码。
💻 JAVA
字号:
// DrawClock.java: Display a clock in JPanel
import java.awt.*;
import javax.swing.*;

public class DrawClock extends JPanel
{
  private int hour;
  private int minute;
  private int second;
  protected int xCenter, yCenter;
  protected int clockRadius;

  // Construct a clock panel
  public DrawClock(int hour, int minute, int second)
  {
    this.hour = hour;
    this.minute = minute;
    this.second = second;
  }

  // Draw the clock
  public void paintComponent(Graphics g)
  {
    super.paintComponent(g);

    // Initialize clock parameters
    clockRadius =
      (int)(Math.min(getSize().width, getSize().height)*0.7*0.5);
    xCenter = getWidth()/2;
    yCenter = getHeight()/2;

    // Draw circle
    g.setColor(Color.black);
    g.drawOval(xCenter - clockRadius, yCenter - clockRadius,
      2*clockRadius, 2*clockRadius);
    g.drawString("12", xCenter-5, yCenter-clockRadius);
    g.drawString("9", xCenter-clockRadius-10, yCenter+3);
    g.drawString("3", xCenter+clockRadius, yCenter+3);
    g.drawString("6", xCenter-3, yCenter+clockRadius+10);

    // Draw second hand
    int sLength = (int)(clockRadius*0.9);
    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);

    // Draw minute hand
    int mLength = (int)(clockRadius*0.75);
    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);

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

    // Display current time in string
    g.setColor(Color.red);
    String time = "Hour: " + hour + " Minute: " + minute +
      " Second: " + second;
    FontMetrics fm = g.getFontMetrics();
    g.drawString(time, (getWidth() -
      fm.stringWidth(time))/2, yCenter+clockRadius+30);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -