JavaFX TitledPane:删除标题

问题描述 投票:0回答:3

是否可以完全删除 TitledPane 的标题?

我设法在 css 文件中使用以下代码使其不可见:

.titled-pane > .title{
    -fx-background-color: rgba(0, 100, 0, 0.0);
    -fx-font-size: 0;
}

但它仍然占用空间,当我将鼠标悬停在它上面时,光标会发生变化。更改填充也没有帮助。

基本上,我只需要 TitledPane 的可展开/可折叠功能,这些功能在按下按钮时执行。

java javafx
3个回答
1
投票

根据TitledPane 的子结构

title
HBox
。这样我们就可以查找它并隐藏它:

Platform.runLater(new Runnable() {
    @Override
    public void run() {
        Pane title = (Pane) titledPane.lookup(".title");
        if (title != null) {
            title.setVisible(false);
        }
    }
});

它应该在场景构建和渲染后

Platform.runLater(...)
运行。


0
投票

有点旧,但你也可以通过 CSS 来做到这一点。 鉴于您的 titledPane 有 id filterTitledPane,您可以:

#filterTitledPane .title {
    -fx-pref-height: 1;
}

#filterTitledPane .title .text {
    visibility: false;
}

0
投票

如果不需要标题栏,可能就没有理由使用 TitledPane。

这就是我制作可折叠滚动窗格的方法:

var controlPanel = // whatever you want to become collapsible
var scrollPane = new ScrollPane(controlPanel);
scrollPane.setMinHeight(0); // remove default constraint
scrollPane.prefHeightProperty().set(0); // hide by default

var b = new Button("Toggle pane");
b.setOnAction(e -> {
  // ScrollPane should either have it's content height, or 0
  double target = scrollPane.getHeight() <= 0 ? scrollPane.getContent().prefHeight(-1)+5 : 0;
  
  // gradually change scrollpane height to target value
  KeyValue keyValue = new KeyValue(scrollPane.prefHeightProperty(), target);
  Timeline timeline = new Timeline(new KeyFrame(Duration.millis(500), keyValue));
  timeline.play();
}
© www.soinside.com 2019 - 2024. All rights reserved.