我已经扩展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?
}
}
在溶液或(缺乏)的设计方法的任何意见理解。
至少有两种方法(不包括调零值的黑客,所建议的评论)
一个是设置自定义属性,那就是在你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的属性(工厂)的可视化。