Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计时器时间表-Java_Java_Swing_Timer_Compiler Errors_Schedule - Fatal编程技术网

计时器时间表-Java

计时器时间表-Java,java,swing,timer,compiler-errors,schedule,Java,Swing,Timer,Compiler Errors,Schedule,这是我的代码,用于我希望每秒都发生的timeleft方法。 我的课叫定时器。 不知道我为什么会出错 它说当我悬停在这条线上时,这里不允许使用void类型。 我将JFrame用于GUI,并在按下按钮时将其放入事件中,同时按下一个计时器,该计时器从您在文本字段中输入的任何数字开始倒计时。正如您从中看到的,scheduleAtFixedRate方法接受TimerTask作为第一个参数。您似乎试图传递一个名为timeleft的方法的结果,该方法的返回类型为void 如果需要以固定速率执行某些代码,则需要

这是我的代码,用于我希望每秒都发生的timeleft方法。 我的课叫定时器。 不知道我为什么会出错

它说当我悬停在这条线上时,这里不允许使用void类型。 我将JFrame用于GUI,并在按下按钮时将其放入事件中,同时按下一个计时器,该计时器从您在文本字段中输入的任何数字开始倒计时。

正如您从中看到的,scheduleAtFixedRate方法接受TimerTask作为第一个参数。您似乎试图传递一个名为timeleft的方法的结果,该方法的返回类型为void

如果需要以固定速率执行某些代码,则需要创建具有适当运行实现的对象,并将其传递给scheduleAtFixedRate。

您声明:

我使用JFrame作为GUI,当我按下一个按钮和一个计时器时,它将从您在文本字段中输入的任何数字开始倒计时,并将其放入事件中

我建议你考虑扔掉你问你的问题的代码,重新思考你的方法。

如果您想在Swing GUI中创建并运行重复事件,请不要使用java.util.Timer,因为您很容易遇到严重的Swing线程问题。取而代之的是使用一个与Swing配合良好的计时器,因为计时器的ActionListener中的所有代码都保证在Swing事件线程上运行

首先,您的代码可以如下所示:

new java.util.Timer().scheduleAtFixedRate(timeleft(), 0, 1000);

虽然对于倒计时,我不确定是否已将初始延迟设置为0。相反,我会让它等待一段时间。

一个错误什么错误?你的错误是什么…在你看来,timeleft在另一个方法中写入时意味着什么?对不起。上面写着,当我悬停在这条线上时,这里不允许使用void类型。如果让你猜的话,你会说这是什么意思?我很困惑。如果我发送代码会有帮助吗?我使用NetBeans来创建GUI,我通过右键单击GUI屏幕上的按钮来创建事件。我把它放在一个事件方法中,得到了大量的错误。这是当我将鼠标悬停在timer:的创建上时:它不是抽象的,并且不重写中的抽象方法actionPerformedActionEventActionListener@Aria:我不喜欢NetBeans的代码生成的原因之一,因为它使新手不必知道Swing库是如何工作的,所以他们不理解它。但不管怎样,如果你看到了问题,那么是的,发布带有任何和所有错误消息的代码。但是,千万不要盲目地将你在这个网站上看到的代码发布到你的程序中。相反,借用这些想法,但创建自己的代码。此外,当你收到错误消息时,请仔细观察它们,因为它们通常会准确地告诉你什么是错误的。
int timerDelay = 1000; // 1000 msecs or 1 second
Timer timer = new Timer(timerDelay, new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) { 
       // code that needs to be repeated goes here
    }

});
timer.setInitialDelay(0);
timer.start();