当前位置: 首页 > 知识库问答 >
问题:

更新自定义TreeItem属性更改的TreeView

庞意智
2023-03-14

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

例如:

public class MyTreeItem extends TreeItem {
    Object customProperty

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

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

任何关于解决方案或(缺乏)设计方法的意见都受到赞赏。

共有1个答案

白博赡
2023-03-14

至少有两种方法(不包括注释中建议的将值置零的hack)

一种是在设置自定义属性时手动触发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);
    }
}

另一种方法是将自定义属性设置为“不动产”,并让相关方(f.i.您的自定义TreeCell)听取该属性的更改。有关如何实现(和重新连接)侦听器的示例,请查看DefaultTreeCell如何处理TreeItem的graphicProperty。

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

 类似资料:
  • 我们如何在IBM自由中定义和更改自定义propeents值,当从WA迁移到自由时,在WA(Web容器设置)中的属性下方 利伯蒂 的等效属性是什么? 错误:

  • 设置新值后,我需要使用Apache Poi更新自定义属性。 我有为自定义属性设置新值的方法: 但是当我打开文档时,属性值已经过时。我必须手动更新它们。

  • 是否可以通过KeyClope REST API更新自定义属性的值?例如,要使用哪个endpoint,以及如何为此处创建的属性构造请求主体。 谢谢

  • 问题内容: 我定义了以下结构。 我创建了一个Person集合,如下所示: 现在,我尝试使用以下代码将active属性更改为false: 但我收到以下错误: 有任何想法吗? 解: 看起来Swift有时无法推断类型,这有点la脚!解决方法如下: 这不起作用: 问题答案: 当使用方括号作为参数时,必须将返回类型也放入:

  • 我正在创建一个SpringBoot/Angular 8应用程序,并在尝试更新解耦的前端/后端对象时遇到一些问题。当我发送包含角模型的json post请求时,'d或其他缺失的值将被更新为null,而不是被忽略。 这个堆栈溢出问题与此密切相关,推荐的解决方案确实有效,但它打断/绕过了一系列Jackson/Hibernate注释(例如和),所以,如果可能的话,我想寻找其他的解决方案:当使用json解析

  • 我正在使用Spring Data MongoDB和Spring Data Rest创建一个Rest API,它允许对我的MongoDB数据库进行GET、POST、PUT和DELETE操作,除了更新操作(PUT)之外,其他操作都很好。只有当我在请求体中发送完整的对象时,它才起作用,否则变量没有在rquest中发送它,则为NULL。有人能指导我解决这个问题吗。