加载新anchorPane时JavaFX光标等待

加载新anchorPane时JavaFX光标等待,javafx,javafx-2,Javafx,Javafx 2,我试图通过移除旧的锚烷在现有场景中加载一个新的锚烷。现在我需要向用户显示加载光标和用户执行的操作不应该发生(如单击按钮或按键) 我使用了but Cursor.WAIT,但仍然可以执行该操作 anchorPane.getScene().SetCursor(Cursor.WAIT) 我已经添加了Cursor.WAIT,在这段代码之前。但我不工作。Cursor.WAIT仅更改光标的图标,但不会阻止您与视图交互。如果要阻止用户与视图交互,可以禁用btn.setEnabled(false)等元素 要向用户

我试图通过移除旧的锚烷在现有场景中加载一个新的锚烷。现在我需要向用户显示加载光标和用户执行的操作不应该发生(如单击按钮或按键)

我使用了but Cursor.WAIT,但仍然可以执行该操作

anchorPane.getScene().SetCursor(Cursor.WAIT)


我已经添加了Cursor.WAIT,在这段代码之前。但我不工作。

Cursor.WAIT仅更改光标的图标,但不会阻止您与视图交互。如果要阻止用户与视图交互,可以禁用btn.setEnabled(false)等元素

要向用户显示您正在执行一些后台操作,他/她应该等到完成后再使用任务和对话框

   Task task = new Task(new Runnable() { ... do stuff ... });
   Dialog dialog = new Alert(AlertType.INFORMATION);
   dialog.setTitle("Wait");
   dialog.disableButton(ButtonType.OK); 
   task.stateProperty().addListener(
            (observableValue, oldState, newState) -> {
                if (newState == Worker.State.SUCCEEDED
                        || newState == Worker.State.FAILED
                        || newState == Worker.State.CANCELLED) {
                    dialog.close();
                }
            });
    new Thread(task).start();
    dialog.showAndWait();

如果不禁用,我不能做其他事情。这样用户就可以知道它的加载情况?我已经尝试过了,但现在我需要在线程内打开一个对话框。我可以这样做吗?我做的是投掷错误。看一看
   Task task = new Task(new Runnable() { ... do stuff ... });
   Dialog dialog = new Alert(AlertType.INFORMATION);
   dialog.setTitle("Wait");
   dialog.disableButton(ButtonType.OK); 
   task.stateProperty().addListener(
            (observableValue, oldState, newState) -> {
                if (newState == Worker.State.SUCCEEDED
                        || newState == Worker.State.FAILED
                        || newState == Worker.State.CANCELLED) {
                    dialog.close();
                }
            });
    new Thread(task).start();
    dialog.showAndWait();