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();
我正在尝试通过删除旧的在现有场景中加载新的 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();