答案 0 :(得分:1)
我只会使用标准Pane
作为第三个内容区域而不是TitledPane
,并应用相关样式来欺骗JavaFX,使底部面板样式化,就好像它是{的内容区域一样{1}}。
粗略地说,你需要一些类似的FXML标记:
TitlePane
这基本上在VBox中放置了三个窗格,以便它们正确堆叠并应用一些样式来告诉JavaFX如何渲染第三个<VBox styleClass="titled-pane"
xmlns:fx="http://javafx.com/fxml/1"
xmlns="http://javafx.com/javafx/2.2" >
<children>
<TitledPane animated="false" text="untitled">
<content>
<AnchorPane minHeight="0.0"
minWidth="0.0"
prefHeight="180.0"
prefWidth="200.0" />
</content>
</TitledPane>
<TitledPane animated="false" text="untitled">
<content>
<AnchorPane id="Content"
minHeight="0.0"
minWidth="0.0"
prefHeight="180.0"
prefWidth="200.0" />
</content>
</TitledPane>
<Pane prefHeight="200.0" prefWidth="200.0" styleClass="content">
<children>
<Button layoutX="74.0"
layoutY="21.0"
mnemonicParsing="false"
text="Button" />
</children>
</Pane>
</children>
</VBox>
。
为了实现第三个Pane
的正确外观,您需要为其提供一个“内容”样式类。这是作为Pane
子结构一部分的后台Pane
的名称,并告诉JavaFX以与TitledPanes
控件相同的方式呈现窗格。
这不会起作用,因为实际的css定义看起来像这样:
TitledPane
这意味着该样式仅适用于样式类为“content”的节点,如果它们也位于样式类为“titled-pane”的节点内。
解决这个问题的简单方法是为根容器.titled-pane .content { // styles defined here }
(在这种情况下为Pane
)提供一个样式类“标题窗格”,有效地欺骗JavaFX,使其认为第三个窗格是一个VBox
内容区域。
输出结果如下所示:
并且titledPanes
都崩溃了: