首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在自定义TreeView属性更改时更新TreeItem

在自定义TreeView属性更改时更新TreeItem
EN

Stack Overflow用户
提问于 2015-05-31 10:16:08
回答 1查看 2.1K关注 0票数 2

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

例如:

代码语言:javascript
复制
public class MyTreeItem extends TreeItem {
    Object customProperty

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-22 13:22:55

至少有两种方法(不包括注释中建议的将值作废的做法)。

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

代码语言:javascript
复制
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);
    }
}

另一种是使定制财产成为“不动产”,并让利害关系方(f.i )。您的自定义TreeCell)侦听该属性的更改。对于如何实现(和重新连接)侦听器的示例,请查看DefaultTreeCell如何处理TreeItem的graphicProperty。

选择哪一种取决于您的上下文:第一种方法确保通知TreeModificationEvents的所有侦听器,第二种方法允许实现一个通用TreeCell,使用treeItem的一个属性(工厂)来可视化。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30556259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档