繁体   English   中英

使用JLabel在面板中显示计时器

[英]Displaying a timer in a panel using JLabel

因此,我正在与同班同学一起编写程序,我们在GUI方面没有太多经验,但是我想做的是在侧面板上显示用户完成拼图所需的时间的计时器(这是一个主要游戏区域以及旁边带有按钮等的侧面板),但我不确定如何使JLabel随用户解决难题所需的时间不断更新。 我不知道如何使用计时器对象来执行此操作,因此我现在尝试仅使用System.nanoTime()

1)如果我使用计时器对象,该在Action侦听器参数中使用什么? 这将调用timerLabel.updateUI(); 每次(假设我已经有actionPerformed方法,其中已经包含那行代码)? 使用计时器对象时,创建它时需要在Jlabel参数中放入什么?

2)如果不使用计时器对象,什么是不断更新时间的最佳方法?

//Timer timer = new Timer(1000, new ActionListener(??));
//timer.start();
long start = System.nanoTime();
String time = new java.text.SimpleDateFormat("ms").format(new java.util.Date(start/1000000));
timerlabel = new JLabel(time);
sideMenu.add(timerlabel);
timerlabel.updateUI();

您似乎不了解如何使用ActionListener ActionListener不带任何参数,因为它是一个接口。 相反,您重写其actionPerformed方法。 您可能正在寻找的是:

Timer timer = new Timer(1000, new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent ev) {
        // Whatever action you want to happen every 1000 milliseconds
        timerLabel.setText(new java.text.SimpleDateFormat("ms")
            .format(new java.util.Date(System.nanoTime()/1000000)));
    }
});
timer.start();

请参阅这里了解更多详情或在这里的一个很好的例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM