📄 clock.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 + -