JavaFX 更改所有阶段的光标
JavaFX change cursor of all stages
我有一个应用程序有很多阶段,执行各种不同的事情。我想知道是否可以更改整个应用程序的 Cursor,而不是必须为所有场景更改它。
例如,如果用户做一个很长的运行任务,我希望所有场景的Cursor都变成wait cursor。完成此任务后,我希望光标变回常规光标。
我知道要更改特定场景的光标,您可以这样做
scene.setCursor(Cursor.WAIT);
我宁愿不必遍历应用程序中的所有阶段,也不必为每个阶段更改光标。
我想知道您是否可以在应用程序级别而不是场景级别更改光标。我没有在网上找到任何建议您可以这样做的内容。
没有直接的方法可以在应用程序级别(据我所知)执行此操作。然而,游标是一个属性,因此您可以将所有场景的游标绑定到一个值。
所以像这样:
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 子类中定义;您可以将它们放在任何对您的应用程序结构方便的地方。
我有一个应用程序有很多阶段,执行各种不同的事情。我想知道是否可以更改整个应用程序的 Cursor,而不是必须为所有场景更改它。
例如,如果用户做一个很长的运行任务,我希望所有场景的Cursor都变成wait cursor。完成此任务后,我希望光标变回常规光标。
我知道要更改特定场景的光标,您可以这样做
scene.setCursor(Cursor.WAIT);
我宁愿不必遍历应用程序中的所有阶段,也不必为每个阶段更改光标。
我想知道您是否可以在应用程序级别而不是场景级别更改光标。我没有在网上找到任何建议您可以这样做的内容。
没有直接的方法可以在应用程序级别(据我所知)执行此操作。然而,游标是一个属性,因此您可以将所有场景的游标绑定到一个值。
所以像这样:
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 子类中定义;您可以将它们放在任何对您的应用程序结构方便的地方。