用java编个钟表程序
时间: 2023-04-08 22:02:34 浏览: 94
好的,我可以回答这个问题。编写一个Java钟表程序需要使用Java编程语言和Java Swing GUI库。您需要创建一个JFrame窗口,然后在窗口中添加一个JLabel标签来显示当前时间。您可以使用Java的Date类来获取当前时间,并使用SimpleDateFormat类将其格式化为您想要的格式。然后,您可以使用Java的Timer类来定期更新JLabel标签上的时间。这是一个基本的Java钟表程序的实现方法。
相关问题
用java画一个钟表的函数
以下是一个基本的 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() 方法使其旋转到正确的位置。
如何制作一个钟表java
制作一个钟表可以分为以下几个步骤:
1. 创建一个窗口并设置窗口大小。
```java
JFrame frame = new JFrame("Clock");
frame.setSize(400, 400);
```
2. 创建一个面板并将其添加到窗口中。
```java
JPanel panel = new JPanel();
frame.add(panel);
```
3. 创建一个时钟面板并将其添加到面板中。
```java
ClockPanel clockPanel = new ClockPanel();
panel.add(clockPanel);
```
4. 创建一个时钟面板类并实现绘制钟表的方法。
```java
public class ClockPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
// 获取当前时间
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
// 计算时针、分针、秒针的角度
int hourAngle = (int) ((hour + minute / 60.0) * 30);
int minuteAngle = (int) (minute * 6);
int secondAngle = (int) (second * 6);
// 绘制时针
g.setColor(Color.BLACK);
g.drawLine(200, 200, (int) (200 + 60 * Math.sin(Math.toRadians(hourAngle))), (int) (200 - 60 * Math.cos(Math.toRadians(hourAngle))));
// 绘制分针
g.setColor(Color.BLUE);
g.drawLine(200, 200, (int) (200 + 80 * Math.sin(Math.toRadians(minuteAngle))), (int) (200 - 80 * Math.cos(Math.toRadians(minuteAngle))));
// 绘制秒针
g.setColor(Color.RED);
g.drawLine(200, 200, (int) (200 + 100 * Math.sin(Math.toRadians(secondAngle))), (int) (200 - 100 * Math.cos(Math.toRadians(secondAngle))));
}
}
```
5. 启动窗口。
```java
frame.setVisible(true);
```
完整代码如下:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.util.Calendar;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Clock {
public static void main(String[] args) {
JFrame frame = new JFrame("Clock");
frame.setSize(400, 400);
JPanel panel = new JPanel();
frame.add(panel);
ClockPanel clockPanel = new ClockPanel();
panel.add(clockPanel);
frame.setVisible(true);
}
}
class ClockPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
// 获取当前时间
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
// 计算时针、分针、秒针的角度
int hourAngle = (int) ((hour + minute / 60.0) * 30);
int minuteAngle = (int) (minute * 6);
int secondAngle = (int) (second * 6);
// 绘制时针
g.setColor(Color.BLACK);
g.drawLine(200, 200, (int) (200 + 60 * Math.sin(Math.toRadians(hourAngle))), (int) (200 - 60 * Math.cos(Math.toRadians(hourAngle))));
// 绘制分针
g.setColor(Color.BLUE);
g.drawLine(200, 200, (int) (200 + 80 * Math.sin(Math.toRadians(minuteAngle))), (int) (200 - 80 * Math.cos(Math.toRadians(minuteAngle))));
// 绘制秒针
g.setColor(Color.RED);
g.drawLine(200, 200, (int) (200 + 100 * Math.sin(Math.toRadians(secondAngle))), (int) (200 - 100 * Math.cos(Math.toRadians(secondAngle))));
}
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)