JavaFx选项卡窗格:每个选项卡一个控制器

JavaFx选项卡窗格:每个选项卡一个控制器,javafx,tabs,controller,Javafx,Tabs,Controller,我是javafx新手,我正在尝试在选项卡窗格中为每个选项卡设置一个控制器。 我找到了这个答案:这让我这么做: Main.fxml <TabPane fx:controller="sample.Controller" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" tabClosingPolicy

我是javafx新手,我正在尝试在选项卡窗格中为每个选项卡设置一个控制器。 我找到了这个答案:这让我这么做:

Main.fxml

<TabPane fx:controller="sample.Controller" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" tabClosingPolicy="UNAVAILABLE" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/null">
  <tabs>
    <Tab text="Configuration">
      <content>
        <fx:include fx:id="mConfigTabPage" source="configTab.fxml"/>
      </content>
    </Tab>
    <Tab text="TODO">
      <content>
        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
      </content>
    </Tab>
  </tabs>
</TabPane>
<Pane fx:controller="sample.ConfigController" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/null" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <Label layoutX="23.0" layoutY="22.0" text="API Key :" />
      <TextField layoutX="95.0" layoutY="18.0" fx:id="mAPIKey" />
   </children>
</Pane>
ConfigController.java

public class Controller {
    private Stage mStage;

    @FXML
    private ConfigController mConfigTabPage;

    public void Controller(){}

    public void setStage(Stage stage)
    {
        mStage = stage;
    }

    @FXML
    public void initialize() {
        System.out.println("CONTROLLER");
    }
}
public class ConfigController {
    public void ConfigController(){}

    @FXML
    public void initialize() {
        System.out.println("CONFIG CONTROLLER");
    }
}
如果我删除,我的程序将启动

@FXML
private ConfigController mConfigTabPage;
在主控制器中

但当我添加它时,我有以下例外:

java.lang.IllegalArgumentException:无法设置 sample.ConfigController字段sample.Controller.mConfigTabPage to javafx.scene.layout.AnchorPane

所以我猜javafx试图将我的控制器投射到一个锚机上,这导致了问题

我应该怎么做才能在我的主控制器中引用每个窗格的控制器?

如果您想使用
fx:id=“something”
将后缀
controller
附加到Java成员字段中。因此,您必须使用:

@FXML
private ConfigController mConfigTabPageController;
请参阅。

如果您想使用
fx:id=“something”
将后缀
controller
附加到Java成员字段中。因此,您必须使用:

@FXML
private ConfigController mConfigTabPageController;
请参阅。

的可能副本