当前位置: 首页 > 面试题库 >

JavaFx-何时fxml注入对象字段?

慕乐池
2023-03-14
问题内容

我是javaFx的新手,我只在@fxml函数和initialize函数中发现@fxml字段不为null,否则@fxml字段将始终为null,是吗?如果是这样,我如何在加载fxml之后立即使用@fxml字段(不使用lookup),就像这样?(以下代码将引发null异常)

    @FXML Label resultTF;
    ....
    FXMLLoader loader=new FXMLLoader();
    loader.setController(this);

    Parent pane = loader.load(getClass().getResource("/fxml/Main.fxml"));
    this.resultTF.setText("");

我要做的就是在fxml中声明一个id为id的字段,并在加载fxml之后立即使用它,例如wpf,flex


问题答案:

您正在调用静态FXMLLoader.load(URL)方法。

由于这是一个静态方法,因此它对您要用来调用它的实例一无所知(无论如何,这都是不好的做法;您的IDE应该对此发出警告)。具体来说,它没有控制器集。

您需要调用一个实例load()方法,例如

FXMLLoader loader=new FXMLLoader();
loader.setController(this);
loader.setLocation(getClass().getResource("/fxml/Main.fxml"));

Parent pane = loader.load();


 类似资料:
  • 父根=fxmlloader.load(getClass().getResource(“/fxml/invoice.fxml”)); 我得到一个异常,因为为null。知道为什么没有注射吗?

  • 我的代码中有以下扩展的JavaFX对象: 它使用我编写的这个客户Java类来跟踪Tile位置: 现在,我想构建一个场景(通过JavaFX场景生成器),它使用一个网格窗格,每个单元格中都有一个平铺对象。我决定首先在scene Builder中构建一个场景,使用JavaFX矩形对象而不是平铺,然后手动编辑.fxml文件并将其中的矩形更改为平铺对象。问题是Intellij现在告诉我FXML文件中的平铺对

  • 问题内容: 我有一个应用程序,其中包含带有标题和菜单的HomeScene.fxml文件。HomeScene还具有dashboardPane,应在按下菜单按钮后对其进行动态更改。仪表板窗格内容应从另一个fxml文件加载,例如说“ FinancesPane.fxml”或“ SettingsPane.fxml”。 我正在尝试在HomeController中替换dashboardPane的内容: 我的Fi

  • 我刚开始使用Dagger并尝试使用dagger2进行DI,但看起来它给我的活动注入了一个空演示器。下面是我的代码。 公共类TasksActivity扩展AppCompatActivity{

  • 我的应用程序有选项卡式窗格,所以为了保持fxml文件的可管理性,我有一个包含选项卡的主fxml文件,并为每个其他选项卡单独设置一个fxml。这很好,但出于某种原因,应用程序已经停止加载第二个标签。我试着在主应用程序中单独加载它,效果很好。我尝试创建一个新的fxml文件作为测试,并加载它,这也是有效的。但是,它不会将其加载到第二个选项卡中。此外,控制台没有输出。 第二个: 很抱歉代码太长,并提前感谢

  • 问题内容: 我正在使用Mockito 和批注将依赖项注入到使用Spring批注的私有字段中: 和 现在,我还要将 真实 对象注入私有字段(不使用setter)。这是否可能,或者该机制仅限于注入Mocks? 问题答案: 使用注释 Mockito将把具有或批注的所有字段视为要注入到带有批注的实例中的潜在候选对象。在上述情况下,实例将被注入到“演示”中 有关更多详细信息,请参阅 样板房 @间谍 @嘲笑