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

📄 clock.java

📁 应用JBuilder开发环境
💻 JAVA
字号:

import java.awt.*;
import javax.swing.*;
import java.util.*;
public class Clock
    extends JFrame {
  public static void main(String[] args) {
    int hour = 0, minute = 0, second = 0;
    if (args.length > 3) {
      System.out.println("Usage: java Clock hour minute second");
      System.exit(0);
    }
    else if (args.length == 3) {
      hour = Integer.parseInt(args[0]);
      minute = Integer.parseInt(args[1]);
      second = Integer.parseInt(args[2]);
    }
    else if (args.length == 2) {
      hour = Integer.parseInt(args[0]);
      minute = Integer.parseInt(args[1]);
    }
    else if (args.length == 1) {
      hour = Integer.parseInt(args[0]);
    }
    Clock frame = new Clock();
    frame.setTitle("Clock");
    frame.getContentPane().add(new DrawClock(hour, minute, second));
    frame.setSize(300, 350);
    frame.setVisible(true);
  }
}
class DrawClock
    extends JPanel {
  private int hour, minute, second;
  private int xCenter, yCenter;
  protected int clockRadius;
  public DrawClock(int hour, int minute, int second) {
    this.hour = hour;
    this.minute = minute;
    this.second = second;
  }
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    clockRadius = (int) (Math.min(getSize().width, getSize().height) * 0.7 *
                         0.5);
    xCenter = (getSize().width) / 2;
    yCenter = (getSize().height) / 2;
    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);
    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);
    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);
    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);
    g.setColor(Color.red);
    String time = "Hour: " + hour + " ~|~Minute: " + minute + " ~|~Second: " +
        second;
    FontMetrics fm = g.getFontMetrics();
    g.drawString(time, (getSize().width - fm.stringWidth(time)) / 2,
                 yCenter + clockRadius + 30);
  }
}

⌨️ 快捷键说明

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