JavaFX改变各个阶段的光标

标签 java javafx javafx-2 javafx-8

我的应用程序有很多阶段,可以执行各种不同的操作。我想知道是否可以更改整个应用程序的光标,而不必为所有场景更改它。

例如,如果用户执行长时间运行的任务,我希望光标更改为所有场景的等待光标。当这个任务完成后,我希望光标变回常规光标。

我知道要更改特定场景的光标

scene.setCursor(Cursor.WAIT);

我不想遍历应用程序中的所有阶段,并为每个阶段更改光标。

我想知道您是否可以在应用程序级别而不是场景级别更改光标。我在网上没有找到任何表明您可以这样做的内容。

最佳答案

没有直接的方法可以在应用程序级别执行此操作(据我所知)。但是,光标是一个属性,因此您可以将所有场景的光标绑定(bind)到单个值。

所以类似:

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 子类中定义;您可以将它们放在对您的应用程序结构方便的任何位置。

关于JavaFX改变各个阶段的光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28570211/

相关文章:

java - 动态创建多个功能区客户端

button - JavaFX:如何制作可点击的文本

https - 如何让JavaFx WebEngine详细报告错误?

java - 调用 Controller 方法时出现 InspirationTargetException - JavaFX

Java:寻找一种优雅的分割字符串的方法

java - 为什么日期 1986/05/04 从 1 :00 but not 0:00 in java ( strange behaviours of calendar with the time zone - Shanghai )? 开始

java - 如何对齐对象并设置彼此之间的间距?使用 JavaFX 和 Java 进行编程

javafx-2 - 如何设置文本对齐方式

java - 即使使用正确的凭据,LDAP 错误代码 49 AcceptSecurityContext 错误数据 52e v2580

image - .Jar 文件在 NeBeans 中运行良好,但在/dist lib 中运行不佳