1

ATitledPane有一个标题。以下是其中几个的外观:

在此处输入图像描述

标题是“更多..”、“笑脸”和“发送”。我想完全隐藏发送标题,而不仅仅是删除文本“发送”。最终结果应该是这样的:

在此处输入图像描述

是否可以?

4

1 回答 1

2

我只会Pane对第三个内容区域使用标准而不是 aTitledPane并应用相关样式来欺骗 JavaFX 设置底部面板的样式,就好像它是 a 的内容区域一样TitlePane

粗略地说,您将需要一些类似于此的 FXML 标记:

<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>

这基本上将三个窗格放置在 VBox 中,以便它们正确堆叠并应用一些样式来告诉 JavaFX 如何呈现第三个Pane.

为了获得第三个的正确外观,Pane您需要给它一个“内容”样式类。Pane这是作为子结构一部分的背景的名称,它告诉 JavaFX 以与控件TitledPanes相同的方式呈现窗格。TitledPane

这将不起作用,因为实际的 css 定义看起来像这样:

.titled-pane .content { // styles defined here }

这意味着该样式仅适用于样式类为“content”的节点,前提是它们也在样式类为“titled-pane”的节点内。

解决这个问题的简单方法是给根容器PaneVBox在这种情况下)一个样式类“标题窗格”,有效地欺骗 JavaFX 认为第三个窗格是一个titledPanes内容区域。

其输出如下所示:

在此处输入图像描述

并且两者都TitledPanes崩溃了:

在此处输入图像描述

于 2013-07-08T20:25:26.847 回答