FXML:包括自定义组件

FXML: Include custom component

我有扩展 HBox 的控件,称为 TablePagination,我完全用我想包含在 FXML 文件中的代码创建它,所以当我这样做时:

<VBox fx:id="box" spacing="15" styleClass="sectionStyle">
      <StackPane>
           <TablePagination fx:id="pagination" StackPane.alignment="CENTER"/>
      </StackPane>
</VBox>

没有出现。但是当我用这样的代码来做的时候:

pagination = new TablePagination(itemTable,items);

StackPane pane = new StackPane();
pane.setAlignment(pagination, Pos.CENTER);
pane.getChildren().add(pagination);
box.getChildren().add(pane);

我的控件得到渲染但不在中心。那我错过了什么?

在您的代码版本中,TablePaginationStackPane 为中心,但 TablePagination 中的节点不是。通话:

pagination.setAlignment(Pos.CENTER);

注意 StackPane.setAlignment 方法是静态的,您应该调用:

StackPane.setAlignment(pagination, Pos.CENTER);