所以我和同学一起制作了一个节目,我们对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();
答案 0 :(得分:0)
您似乎不了解如何使用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();