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

JavaFX控制器类变量未绑定到其FXML对应项

云锦
2023-03-14

从正在运行的javafx应用程序打开新的javafx窗口时,我无法将fxml变量绑定到控制器类中的局部变量。

请注意,对于正在运行的应用程序,我可以毫无问题地绑定到同名变量,在运行时在正在运行的应用程序中填充ComboBox。欢迎任何解决方案。

调用新类的代码(ServerConfigChooser)

FXMLLoader loader = new FXMLLoader(getClass().getResource("ServerConfigChooser.fxml"));
try{
    Stage stage = new Stage();
    stage.setScene(new Scene( (Parent) loader.load()));
    stage.show();
} catch (IOException ex)...

在运行的应用程序中工作的绑定示例(运行时执行的代码)

@FXML
public ComboBox cb_01_fxid;

private void initComboBox(){
    cb_01_fxid.getItems().add(0, "yes");
    cb_01_fxid.getItems().add(0, "no");
}

控制器类中的fxid“cb_01_fxid”与中的ComboBox对象的fxid相同。fxml文件。这毫无问题。下面是新窗口(ServerConfigChooser)的控制器类的代码。

1 @FXML
2 public ComboBox cb_02_fxid;
3
4 public void initComboBoxNewWindow(){
5     cb_02_fxid.addItems(0, "test item 1");
6 }

以及主应用程序中的相关fxml行

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="728.9999000000025" prefWidth="735.0000999999975" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="model.Sample">

还有新窗口

<fx:root type="javafx.scene.layout.AnchorPane" id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="283.0" prefWidth="445.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="model.ServerConfigChooser">
<ComboBox id="cb_02_fxid" layoutX="256.0" layoutY="84.0" onAction="#scc_cb_action">

程序在第5行抛出空指针异常(html" target="_blank">添加行号以供参考)。有人知道为什么第二个控制器没有绑定到第二个fxml对象吗?提前谢谢

共有1个答案

楚德辉
2023-03-14

您的ComboBox fxml部分应该具有fx: id属性集:

<ComboBox fx:id="cb_02"

此id应与控制器类中的变量具有完全相同的名称。

有关详细信息,请参见教程:http://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm

 类似资料:
  • 问题内容: 我的FXML注入有问题。据我所知,我已经设置了程序,但似乎缺少了一些东西。我的代码如下: 主要: 控制器: FXML文件: 识别我正在注入 noteTree,sp和newNoteButton的字段 。但是,当我尝试将项目加载到树形视图时,我得到了NPE。我确认使用if语句表明我的3个字段是。堆栈跟踪如下: 事实证明我和我的功能都可以通过。 谁能指出我缺少/做错了什么? 问题答案: 您试

  • 这可能是先导错误,但是FXML属性没有绑定到fx:id上的控制器类。我把它简化为一个微不足道的例子,但仍然“没有快乐”。我忽略了什么? 相关的Java代码是... 自我不是这里的问题,我很确定我忽略了一些简单的东西。

  • 如何解释文件与其对应的控制器类之间的关系

  • 问题内容: 我试图在JavaFX中获得TableView来动态显示内容。 当我运行程序时,出现此错误: 我的控制器名为“ UserInterfaceController.java”,它与FXML文件位于同一软件包下,我也已将该软件包导入了FXML中。为什么找不到控制器? FXML文件: 控制器: 主类: 问题答案: 使用FXML的全限定名来引用您的控制器: 后续问题的答案 对以下问题的回答解释了为

  • 我试图在JavaFX中获得一个TableView来动态显示内容。 当我运行程序时,出现以下错误: 我的控制器名为“UserInterfaceController.java”,它与FXML文件在同一个包下,我也在FXML中导入了包。为什么找不到控制器? FXML文件: 控制器: 主要类:

  • 问题内容: 我有一个变量,将由一个或多个控制器使用,由服务更改。在那种情况下,我建立了一个服务来将该变量保存在内存中,并在控制器之间共享。 问题是:每次变量更改时,控制器中的变量都不会实时更新。 我创建这个小提琴来提供帮助。http://jsfiddle.net/ncyVK/ -–请注意,当我增加count的值时,或永远不会更新。 如何将Service / Factory变量绑定到Controll