JavaFX更改所有阶段的光标
我有一个应用程序,有很多阶段,做各种不同的事情。我想知道是否可以更改整个应用程序的光标,而不必更改所有场景的光标 例如,如果用户执行长时间运行的任务,我希望所有场景的光标都变为等待光标。完成此任务后,我希望光标变回常规光标 我知道要更改特定场景的光标,您可以执行以下操作JavaFX更改所有阶段的光标,java,javafx,javafx-2,javafx-8,Java,Javafx,Javafx 2,Javafx 8,我有一个应用程序,有很多阶段,做各种不同的事情。我想知道是否可以更改整个应用程序的光标,而不必更改所有场景的光标 例如,如果用户执行长时间运行的任务,我希望所有场景的光标都变为等待光标。完成此任务后,我希望光标变回常规光标 我知道要更改特定场景的光标,您可以执行以下操作 scene.setCursor(Cursor.WAIT); 我宁愿不必遍历应用程序中的所有阶段,并更改每个阶段的游标 我想知道您是否可以在应用程序级别而不是场景级别更改光标。我还没有在网上找到任何建议您可以这样做的内容。在应用
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 ;
}
}
通过createScene(…)
方法创建的任何场景都将更改其光标
显然,游标属性和实用方法不必在应用程序子类中定义;您可以将它们放在应用程序结构方便的任何地方
cursor.set(Cursor.WAIT);