我有一个应用程序有很多阶段,做各种不同的事情。我想知道是否可以更改整个应用程序的Cursor,而不是必须为所有场景更改它。
例如,如果用户执行长时间运行的任务,我希望Cursor更改为所有场景的等待光标。完成此任务后,我希望光标更改回常规光标。
我明白要更改特定场景的光标,你可以做到
scene.setCursor(Cursor.WAIT);
我宁愿不必遍历我的应用程序中的所有阶段,并更改每个阶段的光标。
我想知道你是否可以在应用程序级别而不是场景级别更改光标。我没有在网上找到任何暗示你可以的东西。
答案 0 :(得分:1)
在应用程序级别(我知道)没有直接的方法可以做到这一点。但是,光标是一个属性,因此您可以绑定所有场景'游标为单一值。
类似于:
public class MyApp extends Application {
private final ObjectProperty<Cursor> cursor = new SimpleObjectProperty<>(Cursor.DEFAULT);
@Override
public void start(Stage primaryStage) {
Parent root = ... ;
// ...
someButton.setOnAction(event -> {
Parent stageRoot = ... ;
Stage anotherStage = new Stage();
anotherStage.setScene(createScene(stageRoot, ..., ...));
anotherStage.show();
});
primaryStage.setScene(createScene(root, width, height));
primaryStage.show();
}
private static Scene createScene(Parent root, double width, double height) {
Scene scene = new Scene(root, width, height);
scene.cursorProperty().bind(cursor);
return scene ;
}
}
现在任何时候
cursor.set(Cursor.WAIT);
通过createScene(...)
方法创建的任何场景都将更改其光标。
显然,不必在Application子类中定义游标属性和实用方法;你可以把这些放在方便你的应用程序结构的地方。