gpt4 book ai didi

java - 使用线程创建数字时钟

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:52:09 24 4
gpt4 key购买 nike

我正在尝试使用 Thread 创建一个数字时钟,因为在我看来这是一种合乎逻辑的方式。我不确定我是否以正确的方式处理它,但我的想法是使用 JFrame 构造函数创建初始当前系统时间并使用标签将其显示为文本。然后在构造函数中创建用于更新时间的线程对象。

有点挣扎,希望得到一些关于如何正确做事的建议。

setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE));
setBounds(50, 50, 200, 200);

JPanel pane = new JPanel();
label = new JLabel();

//Font localTime = new Font("Lumina", Font.BOLD , 24);

pane.add(label);
add(pane);
sdf = new SimpleDateFormat("HH:mm:ss");
date = new Date();

s = sdf.format(date);
label.setText(s);
setVisible(true);
runner = new Thread(this);

while(runner == null)
{
runner = new Thread(this);
runner.start();

}

这就是我每秒更新时钟的 run() 方法。

public void run()
{
while(true)
{
try
{
Thread.sleep(1000);
sdf = new SimpleDateFormat("HH:mm:ss");
date = new Date();
s = sdf.format(date);
label.setText(s);
}
catch(Exception e){}

}

主要方法。

public static void main(String[] args)
{
new DigitalClock().setVisible(true);


}

最佳答案

标签状态应该在事件调度线程中更新。

需要添加如下修改:

    SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
label.setText(s);
}
});

而不是简单地从单独的线程更新标签。

值得一看The Swing GUI Freezing Problem的简单描述这是简单的解决方案。

关于java - 使用线程创建数字时钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8939557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com