如何用Java实现和美化电子时钟
时间: 2024-03-06 14:52:21 浏览: 19
好的,这里是一个使用Java Swing库实现和美化电子时钟的示例代码:
```java
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DigitalClock extends JPanel implements Runnable {
private static final long serialVersionUID = 1L;
private Thread thread = null;
// 电子时钟的字体和颜色
private Font clockFont = new Font("Arial", Font.BOLD, 48);
private Color clockColor = Color.WHITE;
public DigitalClock() {
setPreferredSize(new Dimension(400, 100));
setBackground(Color.BLACK);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
// 获取当前时间
Date now = new Date();
// 格式化时间为字符串
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String timeStr = sdf.format(now);
// 设置字体和颜色
g.setFont(clockFont);
g.setColor(clockColor);
// 在面板中居中显示时间字符串
int x = getWidth() / 2 - g.getFontMetrics().stringWidth(timeStr) / 2;
int y = getHeight() / 2 + g.getFontMetrics().getHeight() / 3;
g.drawString(timeStr, x, y);
}
@Override
public void run() {
while (thread != null) {
try {
// 每隔 100 毫秒重绘一次面板
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
repaint();
}
thread = null;
}
public void start() {
if (thread == null) {
thread = new Thread(this);
thread.start();
}
}
public void stop() {
if (thread != null) {
thread.interrupt();
thread = null;
}
}
public static void main(String[] args) {
// 创建窗口和电子时钟面板
JFrame frame = new JFrame("Digital Clock");
DigitalClock clock = new DigitalClock();
frame.setContentPane(clock);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
// 启动电子时钟
clock.start();
}
}
```
这个示例代码使用了Java Swing库来创建窗口和面板,并在面板上绘制电子时钟。在 `paintComponent()` 方法中,我们使用与之前相同的方式获取当前时间并格式化为字符串,然后设置字体和颜色,最后将时间字符串居中显示在面板中。
在 `run()` 方法中,我们使用一个死循环来每隔 100 毫秒重绘一次面板,从而实现电子时钟的实时更新。同时,我们通过 `start()` 和 `stop()` 方法来启动和停止电子时钟的线程。
最后,在 `main()` 方法中,我们创建了一个 `DigitalClock` 对象,并将其设置为窗口的内容面板。我们还启动了电子时钟的线程,这样电子时钟就可以在窗口中不断运行了。
希望这个示例对您有所帮助!