gpt4 book ai didi

java - 根据自定义 TreeItem 属性更改更新 TreeView

转载 作者:行者123 更新时间:2023-11-30 03:24:40 25 4
gpt4 key购买 nike

我扩展了 TreeCell 和 TreeItem 类。 MyTreeItem 包含一个自定义属性,我在 MyTreeCell 中使用它来渲染图形/字体等。问题是当我设置 MyTreeCell.customProperty 时,我不确定如何使 TreeView/Cell 重绘。

例如:

public class MyTreeItem extends TreeItem {
Object customProperty

public void setCustomProperty(Object customProperty) {
this.customProperty = customProperty

// how to fire a change event on the TreeView?
}
}

对解决方案或(缺乏)设计方法的任何评论表示赞赏。

最佳答案

至少有两种方法(不包括评论中建议的将值设为 null 的方法)

一种是在设置自定义属性时手动触发 TreeModificationEvent,即在 setCustomProperty 中:

public class MyTreeItem extends TreeItem {
Object customProperty

public void setCustomProperty(Object customProperty) {
this.customProperty = customProperty
TreeModificationEvent<T> ev = new TreeModificationEvent<>(valueChangedEvent(), this);
Event.fireEvent(this, ev);
}
}

另一种方法是使自定义属性成为“真实”属性,并让感兴趣的各方(例如您的自定义 TreeCell)监听该属性的更改。有关如何实现(和重新连接)监听器的示例,请查看 DefaultTreeCell 如何处理 TreeItem 的图形属性。

选择哪个取决于您的上下文:第一个确保 TreeModificationEvents 的所有监听器都得到通知,第二个允许实现通用 TreeCell,采用 treeItem 的属性(工厂)进行可视化。

关于java - 根据自定义 TreeItem 属性更改更新 TreeView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30556259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com