是否可以在正在运行的JavaFX应用程序中获得对主要Stage的引用?

这个问题的上下文是我想编写一个库,该库可以从另一种语言(Prolog)操纵JavaFX接口(interface)。
为此,我的图书馆需要访问主要舞台。
目的是JavaFX应用程序的程序员不必在start方法中显式存储对Stage对象的引用,因此对用户界面设计者来说应该是透明的(如果需要更多详细信息,则为a related question)。

这个问题的一部分是获得对原始JavaFX应用程序的主要Stage对象的引用,因此我想知道是否某个地方的静态方法之类的东西可以让我访问它。

最佳答案

不确定正确的决定,但这对我的情况有用。

在主类中使用getter和setter创建静态字段:

public class MyApp extends Application {

    private static Stage pStage;

    @Override
    public void start(Stage primaryStage) {
        setPrimaryStage(primaryStage);

        pStage = primaryStage;
        ...
    }

    public static Stage getPrimaryStage() {
        return pStage;
    }

    private void setPrimaryStage(Stage pStage) {
        MyApp.pStage = pStage;
    }
}

接下来,在必要的地方调用getter。例如:
stageSecond.initOwner(MyApp.getPrimaryStage());

08-04 00:28