簡體   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