从FXML中创建的父项中删除子项

时间:2014-07-25 10:56:11

标签: javafx fxml splitpane

我在FXML文件中创建了一系列嵌套的Split Panes。我有按钮,将他们孩子的最大尺寸设置为零,有效地隐藏它们。

这会将Split Panes分隔符留在那里,并在重新调整大小时导致问题,因为Split Panes嵌套并且分隔符正在碰撞。

从分割窗格中删除子节点会导致它只有一个剩余节点,而不是绘制额外的分隔符。

问题在于我无法访问SplitPanes的getChildren(),因为它们受到保护。 按照fxml

中的定义拆分窗格
        <SplitPane fx:id="splitPane1" dividerPositions="0.75" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2"  GridPane.columnIndex="1" GridPane.columnSpan="3" GridPane.rowIndex="2" GridPane.rowSpan="4" >
            <items>
                <SplitPane fx:id="splitPane2"  orientation="VERTICAL"  dividerPositions="0.4,0.8,1" >
                    <SplitPane fx:id="splitPane3"  orientation="HORIZONTAL" dividerPositions="0.5"  >
                        <items>
                            <Viewport fx:id="viewB" minWidth="0" minHeight="0"  />
                            <TilePane fx:id="view3D" prefHeight="200.0" prefWidth="200.0" style="-fx-background-color: black;" />
                        </items>
                    </SplitPane>
                    <Viewport fx:id="viewC" minWidth="0" minHeight="0"  />
          <Viewport fx:id="viewA" minWidth="0" minHeight="0"  />
      </SplitPane>

我想使用的控制器代码:

splitPane2.getChildren().remove(viewA);

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

对于SplitPanegetChildren()并不是你想要的;它将生成SplitPane中包含的所有节点的列表:不仅是实际内容,还包括分隔符(也可能是其他内容)的表示。

getItems()方法给出了在分隔符之间显示的所有节点的列表。所以你需要的只是

splitPane2.getItems().remove(viewA);