更新树视图定制TreeItem属性更改(Update TreeView on custom Tree

2019-10-23 05:55发布

我已经扩展TreeCell和TreeItem类。 MyTreeItem包含了我使用内部MyTreeCell呈现的自定义属性图形/字体等的问题是,当我设置MyTreeCell.customProperty我不知道如何使树视图/单元格重绘。

例如:

public class MyTreeItem extends TreeItem {
    Object customProperty

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

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

在溶液或(缺乏)的设计方法的任何意见理解。

Answer 1:

至少有两种方法(不包括调零值的黑客,所建议的评论)

一个是设置自定义属性,那就是在你setCustomProperty时,手动火TreeModificationEvent:

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);
    }
}

另一种方法是使自定义属性“真正的”属性,让利益相关方(FI定制TreeCell)听那个性质的变化。 对于如何实现一个例子(并重新线)听者看看DefaultTreeCell如何处理TreeItem的graphicProperty。

选择哪一个取决于你的背景:一是确保所有听众TreeModificationEvents通知,第二允许实现一个通用TreeCell服用treeItem的属性(工厂)的可视化。



文章来源: Update TreeView on custom TreeItem property change