我有一个关于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类)。
我希望我足够清楚。
谢谢你的帮助
最佳答案
我已经使用TreeTableView
并根据不同的标准成功应用了样式。我的方法是将样式应用于TreeTableRow
(但我认为该单元格也可以工作)。该行不容易获得引用(至少,我没有找到简单的方法)。我访问它的一种方法是添加行工厂。在工厂中,我添加了拖放处理程序。但是,在样式方面,我使用了自定义单元格(因为我需要它们进行编辑)。在那些自定义单元格的updateItem
方法中,我将获得该行并修改样式。这是必需的,因为行已虚拟化并可以重复使用。我发现我必须在updateItem
调用期间检查“空”行并删除样式(在我的情况下,该样式包括用于“无效”项目的红色边框)。
至于CSS中的伪类,我建议您确保使用正确的伪类。如果您没有使用内置的伪类,则必须在代码中创建一个,然后将其注册到要设置样式的类中。我找到了一个website并提供了一些信息,但是如果您进行搜索,我肯定那里还有更多信息。
我认为该项目本身不支持样式(如您所述)。我将其更多地视为模型/数据类(相对于UI)。
关于java - 具有JavaFX中不同大小的节点的TreeTableView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38739092/