当前位置: 首页 > 知识库问答 >
问题:

如何在JavaFx 2.0中访问Controller类?

夏侯腾
2023-03-14

最近我正在用JavaFx2.0编程一个软件,但是我遇到了一个大问题,那就是——我如何访问一个控制器类?对于每个具有相同类类型的控制器类,它们可能会因为它所依赖的模型而表现不同,所以我想获取视图的控制器类并为其提供指定的模型,我可以这样做吗?我已经尝试通过FXMLLoader获取控制器,但是方法getController()返回null!为什么?

1.LightView.java

FXMLLoader loader = new FXMLLoader();
anchorPane = loader.load(LightView.class.getResource(fxmlFile));//fxmlFile = "LightView.fxml"
//controller = (LightViewController) loader.getController();//fail to get controller!it is null
//I want to -> controller.setLight(light);

2.LightView.fxml

<AnchorPane ... fx:controller="light.LightViewController" >

3.光视控制器.java

....
private Light light;
public void initialize(URL arg0, ResourceBundle arg1)

4.Light.java

.... a simple pojo

所以,我想做的是为每个LightViewController提供一个指定的Light对象(它们来自一个列表)。有人能帮助我吗?非常感谢!

共有3个答案

阳狐若
2023-03-14

请改用获取资源

anchorPane = loader.load(LightView.class.getResourceAsStream(fxmlFile));

它很简单,工作得很好。

邓昀
2023-03-14

除了Alf的回答,我想指出的是,代码可以更短:

URL location = getClass().getResource("MyController.fxml");

FXMLLoader fxmlLoader = new FXMLLoader();

Parent root = (Parent) fxmlLoader.load(location.openStream());

这个也可以。

闾丘康安
2023-03-14

我使用以下内容:

URL location = getClass().getResource("MyController.fxml");

FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(location);
fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory());

Parent root = (Parent) fxmlLoader.load(location.openStream());

通过这种方式,fxmlLoader.getController()为空

 类似资料:
  • 我用以下方法加载一个FXML文件 上面的代码运行正常,现在我想访问在控制器类的构造函数中,但它给出了一个错误:线程“JavaFX应用程序线程”java中的异常。lang.NullPointerException。 注意:我已经为文本字段分配了一些默认值,这就是为什么我想访问它们。 下面是我的控制器类 Controller.java 如有任何建议,将不胜感激。谢谢:)

  • 问题内容: 我有这段Java代码: 我想在Kotlin中获得MainActivity对象。自动转换在处中断。 问题答案: 您可以通过使用合格的来获得对Kotlin中对象的引用。例如:

  • 问题内容: AngularJS访问cookie的方式是什么?我看到过同时引用Cookie的服务和模块的信息,但没有示例。 有没有,或者没有AngularJS规范方法? 问题答案: 该答案已更新,以反映最新的稳定angularjs版本。一个重要的注意事项是周围有薄薄的包装纸。它们几乎相同,因为它们仅与会话cookie一起使用。虽然,这回答了原始问题,但是您可能还需要考虑其他解决方案,例如使用loca

  • 我已经尝试在这里和许多其他地方搜索,但仍然找不到任何解决方案,它总是给出[“天气”]未找到或不起作用的错误。这是我正在使用的代码。 这就是我所关注的: 我想从这个< code>weather JsonArray中获取< code>description和< code>main

  • 本文向大家介绍如何在controller中注入service?相关面试题,主要包含被问及如何在controller中注入service?时的应答技巧和注意事项,需要的朋友参考一下 在config services方法中配置这个service。 在controller的构造函数中,添加这个依赖注入。  

  • 问题内容: 我正在尝试在包api中的蓝图内访问访问应用程序配置。我在初始化的蓝图其在使用。 init.py authorisation.py 我收到RuntimeError:在应用程序上下文之外工作 我知道为什么会这样,但是访问这些配置设置的正确方法是什么? ----更新----暂时,我已经做到了。 问题答案: 你可以用来代替蓝图中的应用程序。 注:该代理仅在的情况下可要求。