JavaFX-可重用的FXML组件

サソリ*_*サソリ 4 java user-interface javafx fxml scenebuilder

我正在使用Scene Builder构建GUI,并且我的大多数场景都有一个共同的元素(底部是iOS类型的主页按钮)。我想知道是否有可能在单独的fxml文件中定义此组件。根据我进行的研究,存在一个声明可重用组件的类似过程,但仅在同一fxml文件中。如何将这个原理应用于几个fxml文件?

ker*_*000 5

您可以这样:

<AnchorPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.example.MainController">
<children>
<fx:include fx:id="someId" source="NestedFXML.fxml"/>
</children>
Run Code Online (Sandbox Code Playgroud)

<AnchorPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.example.NestedFXMLController">
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)

控制器类:

public class MainController implements Initializable {

    @FXML
    private NestedFXMLController someIdController;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
    // TODO Auto-generated method stub

    }
}
public class NestedFXMLController implements Initializable {

    @Override
    public void initialize(URL location, ResourceBundle resources) {
    // TODO Auto-generated method stub

    }
}
Run Code Online (Sandbox Code Playgroud)

不错:可以通过FXML注释注入嵌套控制器。该字段名称必须与FX匹配:id属性字符串+“控制器”!