Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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
新窗口中的JavaFX进度指示器赢得';";旋转“;_Java_Javafx_Window_Progress_Indicator - Fatal编程技术网

新窗口中的JavaFX进度指示器赢得';";旋转“;

新窗口中的JavaFX进度指示器赢得';";旋转“;,java,javafx,window,progress,indicator,Java,Javafx,Window,Progress,Indicator,我制作了登录屏幕,现在我必须做一些后台工作,大约需要8-10秒,我制作了一个带有进度指示器(不确定)的新窗口,但它只是弹出,是静态的(不旋转),我假设线程部分出了问题,下面是代码: Task<Boolean> loginTask = new Task<Boolean>() { @Override protected Boolean call() throws Exception { return true;

我制作了登录屏幕,现在我必须做一些后台工作,大约需要8-10秒,我制作了一个带有进度指示器(不确定)的新窗口,但它只是弹出,是静态的(不旋转),我假设线程部分出了问题,下面是代码:

Task<Boolean> loginTask = new Task<Boolean>() {
        @Override
        protected Boolean call() throws Exception {
            return true;
        }
    };

    loginTask.setOnRunning(e -> {

           //background task(collecting data)

    });
它会弹出,但它是静态的:

我需要做什么才能使进度指示器旋转?

您垄断了JavaFX应用程序线程,这意味着它无法更新UI,因此,
ProgressIndicator
无法启动

Task loginTask=新任务(){
@凌驾
受保护的布尔调用()引发异常{
返回true;
}
};
loginTask.setOnRunning(e->{
//后台任务(收集数据)
});
您的评论表明您正在运行
处理程序时执行实际工作,这不是使用
任务的正确方法。当
任务
进入
运行
状态时,在FX线程上调用该处理程序;它的意思是作为一个回调,您可以在其中更新UI以指示状态的更改。任务的实际工作应该在后台线程上调用的
call()
方法中完成

 Thread thread = new Thread(loginTask);
    thread.setDaemon(true);
    thread.start();

    //progress indicator window
    Parent p = null;
    try {
        p = FXMLLoader.load(getClass().getResource("/fxml/loginLoader.fxml"));
        p.setVisible(true);
        Scene scene = new Scene(p);
        Stage wndw = new Stage();
        this.loadingStage=wndw;
        wndw.setTitle("Loading data... Please wait.");
        wndw.setScene(scene);
        wndw.show();
    } catch (IOException ex) {
        ex.printStackTrace();
    }