作为前言,我对使用Java和JavaFX编程非常陌生。
我想为我的程序制作一个调用按钮的调度按钮:setSchedule()
。
我希望按钮设置一个定期任务,在调用之间定义一段时间。
我创建了一个名为CreateTask
的课程。我在CreateTask
内有一个返回Task<Void>
的函数,该函数名为getTask()
。
调用setSchedule
时:
CreateTask createTask = new CreateTask();
Task task = createTask.getTask();
bar.progressProperty().bind(uploadTask.progressProperty());
programStatusText.textProperty().bind(uploadTask.messageProperty());
ScheduledThreadPoolExecutor sch = (ScheduledThreadPoolExecutor)Executors.newScheduledThreadPool(5);
sch.scheduleWithFixedDelay(task, 5, 5, TimeUnit.SECONDS);
我的程序非常适合一次执行。进度条加载,我的功能完成。问题是该任务不会再被调用。
我曾尝试研究为什么会发生这种情况,到目前为止我还没有运气!
答案 0 :(得分:2)
来自Task docs:
任务是一次性课程,不能重复使用。请参阅服务以获取可重复使用的工作人员。
答案 1 :(得分:1)
对于JavaFX,我通常使用TimeLine来执行计划任务。像这样的东西
HomeController
编辑: 添加了cycleBackground方法的源代码,以显示在JavaFX主线程上执行时,teask是并且应该是微不足道的,因为正如Jewelsea所指出的那样,我在原帖中并不清楚。还注意到我包含了以前的版本,它需要捕获我使用的最终版本不需要的异常。