Java 使计时器摆动
对于我为java类制作的这个游戏,我想在角落里显示一个从0开始计数的计时器 我创建了一个表示秒数的变量,它==>double s=0 我的想法是使用一个Timer对象,在这个对象中,我可以每秒递增变量,并对字符串使用repaint方法 然而,我误解了timer对象的工作原理,在延迟之后,它的计数迅速增加到无穷大。我不知道现在该怎么办。请给我一个提示 这是我的代码,感谢您的帮助:Java 使计时器摆动,java,swing,timer,Java,Swing,Timer,对于我为java类制作的这个游戏,我想在角落里显示一个从0开始计数的计时器 我创建了一个表示秒数的变量,它==>double s=0 我的想法是使用一个Timer对象,在这个对象中,我可以每秒递增变量,并对字符串使用repaint方法 然而,我误解了timer对象的工作原理,在延迟之后,它的计数迅速增加到无穷大。我不知道现在该怎么办。请给我一个提示 这是我的代码,感谢您的帮助: int delay = 5000; //milliseconds ActionListener taskPerf
int delay = 5000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
s=(int)s+1;
}
};
new Timer(delay, taskPerformer).start();
String t = "" + s;
g.drawString(t, 100, 100);
repaint();
像这样的东西怎么样:你可能需要改变它来满足你的需要
boolean temp=true;
long startTime = System.nanoTime();
while(temp){
float time = (System.nanoTime()-startTime)/ 10000000.000f;
System.out.println(time);
}
您可以尝试实现Runnable接口,然后启动用于绘制组件的类的新线程。因为Thread实现了Runnable接口,所以您将能够在程序中创建一个新的执行点,在重新绘制组件之前,您可以在其中使用Thread.sleep调用延迟。以下是您应该尝试做的一个示例:
Thread thread = new Thread(ClassNameHere);
thread.start();
如果您有兴趣尝试此功能,可以在界面上的API上找到更多信息。Swing Timer missing repaint在ActionListener中,这里是关于paintComponent的每日5-10个问题