我正在像这样运行我的 JavaFX 应用程序:
public class MainEntry {
public static void main(String[] args) {
Controller controller = new Controller();
Application.launch(MainStage.class);
}
}
MainStage
类扩展了 Appication
。 Application.launch
在一个特殊的 FX 线程中启动我的 JavaFX 窗口,但在我的 main 方法中我什至没有我的 MainStage
类的实例。
如何将非字符串参数(在我的例子中是 controller)传递给 MainStage
实例?这是一个有缺陷的设计吗?
最佳答案
从 JavaFX 9 开始,您可以使用公共(public) API“手动”触发 JavaFX 平台的启动。唯一的缺点是 stop
方法的调用方式与通过 Application.launch
启动的应用程序不同:
public class MainEntry {
public static void main(String[] args) {
Controller controller = new Controller();
final MainStage mainStage = new MainStage(controller);
mainStage.init();
Platform.startup(() -> {
// create primary stage
Stage stage = new Stage();
mainStage.start(stage);
});
}
}
传递给 Platform.startup
的 Runnable
在 JavaFX 应用程序线程上被调用。
关于java - 如何将参数传递给 JavaFX 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24611789/