Я не совсем уверен, как вы устанавливаете курсор, но если вы хотите, чтобы курсор "ожидал" всю сцену, я бы сделал что-то вроде node.getScene().setCursor(Cursor.WAIT);
, потому что он установит этот курсор для всехдочерних узлов, поэтому, если вы просто хотите, чтобы этот курсор использовался только для таблицы, вы можете установить table.setCursor(Cursor.WAIT);
РЕДАКТИРОВАТЬ: Дайте этот снимок, вам нужно только установить его на сцене, а дочерние узлы также должны взятьсвойство, поэтому я прокомментировал настройку других узлов
btSave.setOnAction((event) -> {
final Task task = new Task<Void>() {
@Override
protected Void call() throws InterruptedException {
try {
//root.setCursor(Cursor.WAIT);
//Set<Node> cells = table.lookupAll(".table-cell");
//for (Node node : cells) {
// TableCell<?, ?> cell = (TableCell<?, ?>) node;
// if (cell.getGraphic() instanceof TextField) {
// cell.getGraphic().setCursor(Cursor.WAIT);
// }
//}
btSave.getScene().setCursor(Cursor.WAIT);
int first = GuiUtil.getIndexToScroll(tvKontiMonths);
DataBean dataBean = new DataBean(table.getItems(),
results.isLevel());
Map<String, Boolean> listUpdates = (Map<String, Boolean>) DataProvider.getInstance()
.updateData(dataBean);
//table.setCursor(Cursor.DEFAULT);
//root.setCursor(Cursor.DEFAULT);
btSave.getScene().setCursor(Cursor.DEFAULT);
resetEditProperties();
refreshWithManualCells(listUpdates);
tvKontiMonths.scrollTo(first);
tvKonti.scrollTo(first);
} catch (Exception e) {
}
return null;
}
};
new Thread(task).start();
});
Также вот пример запуска:
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Button button = new Button("Wait Cursor");
button.setOnAction(event ->
new Thread(()->{//Imitating your threading
//Show that stuff is being processed
button.getScene().setCursor(Cursor.WAIT);
//process some stuff
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//finished processing change cursor back
button.getScene().setCursor(Cursor.DEFAULT);
}).start()
);
VBox vBox = new VBox();
vBox.getChildren().add(button);
//It looked empty so I added labels lol
for(int i =0; i<10;i++)
vBox.getChildren().add(new Label("Fake Node Number " + i));
Stage stage = new Stage();
stage.setScene(new Scene(vBox));
stage.show();
}
public static void main(String[] args) { launch(args); }
}