在JavaFX 2.2中隐藏TitledPane的标题

时间:2013-07-07 15:35:52

标签: javafx-2 javafx accordion visibility titlebar

TitledPane有一个标题。以下是其中几个看起来的样子:

enter image description here

标题是“更多......”,“表情符号”和“发送”。我想完全隐藏发送标题,而不只是删除文本“发送”。最终结果应该是这样的:

enter image description here

有可能吗?

1 个答案:

答案 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内容区域。

输出结果如下所示:

enter image description here

并且titledPanes都崩溃了:

enter image description here