作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个 TableTree,其中包含具有 boolean 属性“selected”的 Component 类对象。我想隐藏未选择行组件的表中的行。我试过这个:
componentTree.setRowFactory(new Callback<TreeTableView<Component>, TreeTableRow<Component>>() {
@Override
public TreeTableRow<Component> call(TreeTableView<Component> param) {
TreeTableRow<Component> row = new TreeTableRow<Component>() {
@Override
protected void updateItem(Component component, boolean empty) {
if(!empty) {
if (!component.isSelected()) {
setVisible(false);
setManaged(false);
System.out.println("hide");
} else {
setVisible(true);
setManaged(true);
System.out.println("show");
}
}
}
};
return row;
}
});
在system.out上我可以看到很多“显示”和“隐藏”消息,但这不会影响表格,所有行都像以前一样显示。
对这个主题有什么想法吗?
谢谢!
最佳答案
我用了eclipse的 fx.ui.controls
相同的库之前实现了相同的目标。
<dependency>
<groupId>at.bestsolution.eclipse</groupId>
<artifactId>org.eclipse.fx.ui.controls</artifactId>
<version>2.2.0</version>
</dependency>
库提供了一个类:FilterableTreeItem<T>
树包下。该类旨在用于像您这样的情况。您可以提供Predicate
到树的根,当给定的值发生变化时,项目将被隐藏:
// Children
final FilterableTreeItem<Component> childNode1 = new FilterableTreeItem<>(component1);
final FilterableTreeItem<Component> childNode2 = new FilterableTreeItem<>(component2);
final FilterableTreeItem<Component> childNode3 = new FilterableTreeItem<>(component3);
// Root
final FilterableTreeItem<Component> root = new FilterableTreeItem<>(rootComponent);
root.getInternalChildren().setAll(childNode1, childNode2, childNode3);
root.setPredicate((parent, value) -> value.isSelected());
// TreeTableView
final TreeTableView<Component> treeTableView = new TreeTableView<>(root);
请注意,您必须使用 getInternalChildren()
添加子项和默认值 getChildren()
.
FilterableTreeItem<T>
还提供了predicateProperty()
如果您需要更新项目的显示或隐藏方式,您可以绑定(bind)到另一个属性。
此类的另一个优点是它显示了直到与谓词匹配的项的根的整个路径。
关于Javafx - 根据数据内容隐藏TreeTableRow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60434955/
我尝试为我的 TreeTableView 实现不同的着色,因为有一些 DummyElements 应该在视觉上与其他元素分开。由于它们仍然是可编辑的,因此在选择它们时也必须有特定的样式。我试过以下方法
我是一名优秀的程序员,十分优秀!