首页 > 解决方案 > 如何在 JavaFX TreeTableView 中设置行之间的空间?

问题描述

我试图在 JavaFX TreeTableView 上的行之间允许 5 个像素的空间。我认为更改其中一个 CSS 元素的边距、填充或边框宽度可以修复它,但要么什么都没有发生,要么表格单元格中的文本被移动了。

我看到 TreeViews 和 TableViews 可能有解决方案,例如下面的 StackOverflow 链接,但它们似乎不适用于 TreeTableViews。

如何在 JavaFX TableView 中的 TableRows 之间设置空间?

我当前的 CSS:

.tree-table-view {
    -fx-table-cell-border-color: transparent;
    -fx-background-color: black;
}

/* TreeTableView */
.tree-table-view .column-header,
.tree-table-view .column-header-background .filler {
    -fx-background-color: black;
    -fx-border-width: 100;
}

.tree-table-cell{
    -fx-text-fill: white;
    -fx-wrap-text: true;
}

.tree-table-row-cell .tree-disclosure-node .arrow {
    -fx-shape: null;
    -fx-background-color: null;

    -fx-min-width: 0;
    -fx-pref-width: 0;
    -fx-max-width: 0;

    -fx-min-height: 0;
    -fx-pref-height: 0;
    -fx-max-height: 0;
}

.tree-table-row-cell:expanded .tree-disclosure-node .arrow {
    -fx-shape: null;
    -fx-background-color: null;
    -fx-max-width: 0;
    -fx-max-height: 0;
}

.tree-table-row-cell{
    -fx-background-color: black;
    -fx-font-size: 12px;
    -fx-indent: 0;
    -fx-cell-size: 50px;
}

.group-tree-table-row-cell{
    -fx-background-color: darkgray;
}

.entry-tree-table-row-cell{
    -fx-background-color: darkslategray;
}

.tree-table-row-cell:selected{
    -fx-background-color: darkblue;

    -fx-table-cell-border-color: transparent;
}

标签: javafx

解决方案


您需要将您的样式应用于tree-table-cell样式类(可以在此处找到文档:https ://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html#treetablecell )

在列中每个单元格的底部应用 5 的边框宽度可以在不移动文本的情况下为您提供所需的效果。这可以通过将以下内容添加到样式表来完成。

.tree-table-cell {
    -fx-border-width: 0 0 5 0;
}

这也可以通过为 的列设置自定义单元工厂TreeTableView并为单元提供所需的设置来完成。请参阅TreeTableColumn#setCellFactory(Callback<TreeTableColumn<S,T>,TreeTableCell<S,T>> valuehttps://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TreeTableColumn.html#setCellFactory-javafx.util.Callback- )。


推荐阅读