JavaFX Cursor 在加载新的 anchorPane 时等待

JavaFX Cursor wait while loading new anchorPane

我正在尝试通过删除旧的在现有场景中加载新的 anchorPane anchorPane.Now 我需要向用户展示加载光标和用户执行的操作不应该发生(例如按钮单击或按键)。

我已经使用了但是Cursor.WAIT但是还是可以执行这个动作

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

    HomeController controller=new HomeController(stage,anchorPane);
    FXMLLoader loader = new FXMLLoader();
    loader.setLocation(getClass().getResource("/fxml/home.fxml"));
    loader.setController(controller);
    Parent root = null;
    try {
        root=(Parent) loader.load();
    } catch (IOException e) {
        LOGGER.error("Message is " + e);
        e.printStackTrace();
    }

    anchorPane.getChildren().remove(0);
    anchorPane.getChildren().add(root);

我在这之前添加了Cursor.WAITcode.but我不工作

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

等元素

向用户显示您正在执行一些后台操作,he/she 应该等到它完成使用任务和对话框。

   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();