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

时间:2015-01-12 22:14:14

标签: java eclipse timer jpanel 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();

1 个答案:

答案 0 :(得分:0)

您似乎不了解如何使用ActionListenerActionListener不接受任何参数,因为它是一个接口;相反,您覆盖其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();

有关详细信息,请参阅here;有关相当不错的示例,请参阅here