用java画一个钟表的函数
时间: 2024-05-10 10:18:51 浏览: 12
以下是一个基本的 Java 程序,用于绘制时钟表。它使用 Graphics2D 类来绘制表盘和指针。
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.util.Calendar;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Clock extends JPanel {
private int hour;
private int minute;
private int second;
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 获取当前时间
Calendar calendar = Calendar.getInstance();
hour = calendar.get(Calendar.HOUR_OF_DAY);
minute = calendar.get(Calendar.MINUTE);
second = calendar.get(Calendar.SECOND);
// 绘制表盘
g2.setColor(Color.WHITE);
g2.fillOval(10, 10, 200, 200);
g2.setColor(Color.BLACK);
g2.drawOval(10, 10, 200, 200);
// 绘制时针
g2.rotate(Math.toRadians((hour * 30) + (minute / 2)), 110, 110);
g2.setColor(Color.BLACK);
g2.drawLine(110, 110, 110, 60);
// 绘制分针
g2.rotate(Math.toRadians((minute * 6) + (second / 10)), 110, 110);
g2.setColor(Color.BLACK);
g2.drawLine(110, 110, 110, 40);
// 绘制秒针
g2.rotate(Math.toRadians(second * 6), 110, 110);
g2.setColor(Color.RED);
g2.drawLine(110, 110, 110, 20);
// 绘制中心点
g2.setColor(Color.BLACK);
g2.fillOval(105, 105, 10, 10);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Clock");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(240, 240);
frame.setResizable(false);
Clock clock = new Clock();
frame.add(clock);
frame.setVisible(true);
// 每秒钟重绘一次
while (true) {
clock.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {}
}
}
}
```
该程序创建了一个 JFrame 窗口,将 Clock 对象添加到其中,并使用 while 循环每秒钟重绘一次。在 Clock 对象的 paint() 方法中,绘制了表盘、时针、分针和秒针。绘制时针、分针和秒针时,使用 Graphics2D 的 rotate() 方法使其旋转到正确的位置。