【问题标题】:JavaFX Fit to parent when adding FXML file to SplitPane将 FXML 文件添加到 SplitPane 时,JavaFX 适合父级
【发布时间】:2015-07-23 10:57:57
【问题描述】:

我有一个 SplitPane,左侧是 TreeView,右侧是内容区域。当我单击 TreeView 中的某个项目时,我想在右侧显示内容。我现在的做法是加载我在 SceneBuilder 中创建的 FXML。我的问题是 FXML 不适合 SplitPane。这就是我加载 FXMl 文件的方式

if (selectedItem.getValue() == "Sample") {
    try {
        AnchorPane pane = (AnchorPane) FXMLLoader.load(getClass().getResource("Sample.fxml"));
        splitPane.getItems().set(1, pane);
    } catch (IOException e) {
        e.printStackTrace();
    }           
}

如何使我创建的这个 AnchorPane 适合原始的 SplitPane 大小?

【问题讨论】:

    标签: javafx fxml fxmlloader


    【解决方案1】:

    我也一直在努力解决这个问题, 我终于通过避免 AnchorPanes 的嵌套包装来解决问题。 我已将 AnchorPane 作为 SplitPane 的子容器移除,因为包含的 FXML 的根也以 AncherPane 开头:

    现在我的主要 FXML 有如下内容:

    <SplitPane>
        <items>
            <fx:include fx:id="navigationPanel" source="FX2NaviPanel.fxml"/>
            <fx:include fx:id="dataPanel" source="FX2dataPanel.fxml"/>
        </items> 
    </SplitPane>

    每个子 FX2NaviPanel.fxml 和 FX2dataPanel.fxml 仍然以 AnchorPane 开头:

    <AnchorPane ...>
       <children>
          <GridPane></GridPane>
       </children>
    </AnchorPane>

    有了这个和适当的最大尺寸,以及相关的适合父级和零锚点,面板很好地坚持拆分器的移动和主窗口的大小调整。

    【讨论】:

      【解决方案2】:

      在 FX 中对齐是一件很痛苦的事情

      我建议如下:

      <SplitPane>
          <TreeView /> //LEFT
          <ANCHORPANE AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> //RIGHT, anchors make the content stick to the corner
              <AnchorPane fx:id="myDynamicContent"/>
          </ANCHORPANE>
      </SplitPane>
      

      这样,内部窗格 myDynamicContent 应该被拉伸到所有角落。请告诉这是否是答案。

      您也可以尝试在您的内容上设置 AncorPane.* 属性,这样您就不需要嵌套的 AnchorPane。

      编辑:经过考虑,我认为您需要外部窗格,因为它是“容器”,没有它,内部窗格就无法坚持。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-23
        • 1970-01-01
        • 2016-01-07
        相关资源
        最近更新 更多