0

我有一个基于 TreeTableViews 及其行的问题。我创建了一个名为 Component 的对象的树表视图,我有 3 类组件,我将命名为 A、B 和 C。在我的项目中,B 对象包含在 A 上,C 对象包含在 B 对象上。我能够用这 3 个级别的组件显示 TreeTableView,但现在我想在这个表中添加一些 CSS 以便能够具有某些特征:

- 首先,我希望 A 对象的大小大于 B 对象,并且 C 相同,因为这个 T 根据我在互联网上看到的内容尝试了这样的东西:

.tree-table-cell {
     -fx-font-size: 11pt;
}

.tree-table-cell:sub-tree-item {
    -fx-font-size: 9pt;
}

但它似乎不起作用......

- 然后我希望能够在每个 A 组件之间有一个分隔符,只是为了表格的可见性

- 最后,我希望所选项目和他的所有树节点(如果选择 C,则意味着 C 元素 + 其父 B + 其父 A)为粗体或直接识别它的东西。为此,我尝试在此类上应用一些简单的 CSS:

.tree-item:selected {
     -fx-font-weight: bold;
}

没有任何成功...

事实上,我无法按照我的意愿操作我的 TreeItems(在 TreeItem 中添加一些 StyleSheets 类是不可能的)。

我希望我足够清楚。谢谢你的帮助

4

1 回答 1

0

我已经使用TreeTableView并成功应用了基于不同标准的样式。我的方法是将样式应用于TreeTableRow(但我认为单元格也可以工作)。该行不容易获得参考(至少,我没有看到简单的方法)。我访问它的一种方法是添加一个行工厂。在工厂中,我添加了拖放处理程序。但是,对于样式,我使用了自定义单元格(因为我需要它们进行编辑)。在updateItem那些自定义单元格的方法中,我会获取行并修改样式。这是必要的,因为行是虚拟化和重用的。我发现我必须在通话期间检查“空”行updateItem并删除样式(在我的情况下,其中包括“无效”项目的红色边框)。

至于 CSS 中的伪类,我建议您确保使用正确的伪类。如果您没有使用内置的伪类,则必须在代码中创建一个,然后将其注册到您要设置样式的类中。我找到了一个包含一些信息的网站,但如果您搜索,我确信那里有更多信息。

我认为该项目本身不支持样式(如您所述)。我更多地将其视为模型/数据类(相对于 UI)。

于 2016-08-03T20:11:08.837 回答