Java 使计时器摆动

Java 使计时器摆动,java,swing,timer,Java,Swing,Timer,对于我为java类制作的这个游戏,我想在角落里显示一个从0开始计数的计时器 我创建了一个表示秒数的变量,它==>double s=0 我的想法是使用一个Timer对象,在这个对象中,我可以每秒递增变量,并对字符串使用repaint方法 然而,我误解了timer对象的工作原理,在延迟之后,它的计数迅速增加到无穷大。我不知道现在该怎么办。请给我一个提示 这是我的代码,感谢您的帮助: int delay = 5000; //milliseconds ActionListener taskPerf

对于我为java类制作的这个游戏,我想在角落里显示一个从0开始计数的计时器

我创建了一个表示秒数的变量,它==>double s=0

我的想法是使用一个Timer对象,在这个对象中,我可以每秒递增变量,并对字符串使用repaint方法

然而,我误解了timer对象的工作原理,在延迟之后,它的计数迅速增加到无穷大。我不知道现在该怎么办。请给我一个提示

这是我的代码,感谢您的帮助:

 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个问题