Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX更改所有阶段的光标_Java_Javafx_Javafx 2_Javafx 8 - Fatal编程技术网

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);