繁体   English   中英

JavaFX Controller类变量未绑定到其FXML对等变量

[英]JavaFX Controller class variables not binding to their FXML counterparts

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

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

调用新类的代码(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”与.fxml文件中ComboBox对象的fxid相同。 这绑定没有问题。 以下是新窗口(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行(添加行号以供参考)上引发空指针异常。 有谁知道为什么第二个控制器没有绑定到第二个fxml对象? 提前致谢

您的ComboBox fxml部分应设置fx:id属性:

<ComboBox fx:id="cb_02"

此ID应与Controller类中的变量名称完全相同。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM