java实现的小时钟示例分享


当然可以,以下是一个简单的Java实现的小时钟示例。这个例子将使用`javax.swing`库来创建一个GUI(图形用户界面)时钟。请注意,为了运行这段代码,你需要有Java开发环境(如JDK)和Swing库的支持。


import javax.swing.*;
import java.awt.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleClock extends JPanel implements Runnable {

    private SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
    private Timer timer;

    public SimpleClock() {
        // 设置面板的更新间隔为每秒
        timer = new Timer(1000, null);
        timer.addActionListener(e -> repaint());
        timer.start();
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        // 获取当前时间
        String time = timeFormat.format(new Date());

        // 设置字体
        Font font = new Font("Serif", Font.BOLD, 36);
        g.setFont(font);

        // 设置颜色
        g.setColor(Color.BLACK);

        // 计算字符串的居中位置
        FontMetrics metrics = getFontMetrics(font);
        int x = (getWidth() - metrics.stringWidth(time)) / 2;
        int y = ((getHeight() - metrics.getHeight()) / 2) + metrics.getAscent();

        // 绘制时间
        g.drawString(time, x, y);
    }

    @Override
    public Dimension getPreferredSize() {
        // 设置面板的推荐大小
        return new Dimension(200, 100);
    }

    @Override
    public void run() {
        // 这个run方法在这个例子中实际上没有被直接用到,但它是Runnable接口的一部分
        // 如果需要将时钟功能集成到多线程应用中,可以进一步扩展
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Simple Clock");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new SimpleClock());
        frame.pack();
        frame.setLocationRelativeTo(null); // 居中显示
        frame.setVisible(true);
    }
}

这段代码创建了一个简单的时钟,它每秒更新一次时间,并将时间显示在窗口的中央。它使用了`javax.swing.Timer`来定时触发重绘,从而更新显示的时间。`paintComponent`方法被用来在组件上绘制当前的时间。希望这个示例能够满足你的需求!