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

2024-01-15

我扩展了 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?
    }
}

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


至少有两种方法(不包括将值归零的方法,如评论中所建议的)

一种是在设置自定义属性时手动触发 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 的所有侦听器都得到通知,第二个允许实现采用 treeItem 的属性(工厂)进行可视化的通用 TreeCell。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据自定义 TreeItem 属性更改更新 TreeView 的相关文章

  • 如何使用 Java 以独立于平台的方式读取 Windows 共享驱动器?

    如何使用 Java 从 Windows 共享驱动器中读取数据 以便执行读取的 Java 代码可以在任何平台上同样正确地运行 您可以使用JCIFS http jcifs samba org 使用纯 Java 代码访问 SMB CIFS 共享
  • 在 JTable 中使用自定义 TablecellRenderer

    我是 Java 新手 我创建了一个JTable 就是这样addRow当我尝试向表中添加一行时 该方法有效 private void addTableRow String type String name String rank String
  • 方法重载。你能过度使用它吗?

    当定义多个使用不同过滤器返回相同形状的数据的方法时 什么是更好的做法 显式方法名称或重载方法 例如 如果我有一些产品并且我正在从数据库中提取 显式方式 public List
  • 克隆 dom.Document 对象

    我的目的是将xml文件读入Dom对象 编辑dom对象 其中涉及删除一些节点 完成此操作后 我希望将 Dom 恢复到其原始状态 而不实际解析 XML 文件 无论如何 我可以克隆第一次解析 xml 文件后获得的 dom 对象吗 这个想法是避免一
  • 如何将 Cucumber 中的数据表转换为对象列表?

    原标题 Java 中的 Cucumber DataTables 中的标量是什么意思 From 参考 Java 提供了几种标量类型 这些包括原始数字 类型 加上布尔值和字符 每个标量 原始 类型都有一个关联的包装类或 参考类型 阅读javad
  • Spring批量写入器限制

    我正在工作 Spring Batch 项目 从数据库读取记录然后写入rabbitmq 然后发送到HTTP消息网关 网关有150TPS我需要将我的应用程序限制为 150TPS 有没有办法带弹簧批的油门或者还有其他更好的方法吗 你能行的 在 S
  • 枚举内的枚举

    这不是我被卡住的问题 而是我正在寻找一种简洁的方式来编写我的代码 本质上 我正在编写一个事件驱动的应用程序 用户触发事件 事件被发送到适当的对象 然后对象处理事件 现在我正在编写偶数处理程序方法 我希望使用 switch 语句来确定如何处理
  • Logback 配置在单行上有异常吗?

    我的日志被提取 传输并合并到 elasticsearch 中 多行事件很难跟踪和诊断 有没有办法使用收集器和正则表达式将异常行分组到单个记录中登录配置 https logback qos ch manual layouts html xTh
  • 外部化 Spring Security 配置?

    我有一个 Web 应用程序 可以使用 Spring Security 的几种不同配置 但是 这些差异配置都是在我的 applicationContext 配置文件中设置的 因此 为了在客户站点调整这些内容 必须在 WAR 文件内修改这些内容
  • 声纳要求将这一领域定为最终目标

    我的程序中有以下代码 在与 Maven 集成后 我正在运行 SonarQube 5 对其进行代码质量检查 我面临这个错误 将此 public static processStatus 字段设为最终字段 将此 public static pr
  • 在Java中读取制表符分隔的文件

    我有以下代码来读取 Java 中的制表符分隔文件 while str in readLine null if str trim length 0 continue String values str split t System out p
  • 如何解决声纳中的 dodgy:unchecked/unconfirmedcast 问题?

    我在下面的代码中通过声纳获得异常 我该如何解决这个问题 建议我 Override public boolean validate BaseInfo infoObject boolean isValid true AckTransferPay
  • 为什么这段代码可以在 Java 7 中运行,而不能在 Java 8 中运行?

    我目前使用 IDE Eclipse 版本 Neon 2 Release 4 6 2 和版本 java Version 8 Update 131 在此代码中 IDE 给出错误 类型不匹配 无法从字节转换为整数 Integer i byte 1
  • 我有什么理由应该嘲笑?

    我也是 Mockito 和 PowerMockito 的新手 我发现我无法使用纯 Mockito 测试静态方法 因此我需要使用 PowerMockito 对吗 我有一个非常简单的类 名为 Validate 使用这个非常简单的方法 publi
  • 如何将 .txt 文件的最后 5 行读入 java

    我有一个包含多个条目的文本文件 例如 hello there my name is JoeBloggs 我如何按降序阅读最后五个条目 即来自 JoeBloggs 那里 我目前有代码只能读取最后一行 public class TestLast
  • 如何强制 Spark 执行代码?

    我如何强制 Spark 执行对 map 的调用 即使它认为由于其惰性求值而不需要执行它 我试过把cache 与地图调用 但这仍然没有解决问题 我的地图方法实际上将结果上传到 HDFS 所以 它并非无用 但 Spark 认为它是无用的 简短回
  • 如何在java中进行多处理,以及预期的速度提升是多少?

    我是一个新手 使用 Java 对 csv 文件进行一些数据处理 为此 我使用 Java 的多线程功能 线程池 将 csv 文件批量导入到 Java 中 并对每一行执行一些操作 在我的四核处理器上 多线程大大加快了处理速度 我很想知道多处理如
  • eclipse.ui.menus 的名称过滤器

    我有一个菜单贡献 通过实现org eclipse ui menus扩展点 我想仅为特定文件扩展名 例如 pld 提供此菜单贡献 但我不知道如何使用 visibleWhen 来做到这一点 有任何想法吗 更新 到目前为止我的扩展点
  • Encog:BasicNetwork:无需预先构建数据集的在线学习

    我正在尝试使用 encog 库作为强化学习问题的函数逼近器 更准确地说 我正在尝试启动并运行多层感知器 BasicNetwork 由于我的代理将根据我选择的任何 RL 算法以某种方式探索世界 因此我无法预先构建任何 BasicNeuralD
  • Java GridBagConstraints gridx 和 gridy 不工作?

    我正在尝试使用gridx and gridy定位我的按钮的约束 但它们不起作用 如果我改变gridx and gridy变量 什么也没有发生 如果我将填充更改为GridBagConstraints to NONE 仍然不行 我在这里错过了什

随机推荐

  • 尝试启动 Firefox 时出现 Python Selenium 错误

    我在 ipython 笔记本中尝试使用 Selenium 打开 Firefox 时遇到错误 我环顾四周 发现了类似的错误 但没有任何错误与我收到的错误完全匹配 有人知道问题可能是什么以及我如何解决它吗 我使用的是 Firefox 22 我输
  • 在 Rakefile 中设置 rspec 2 任务

    我有一个看起来像这样的 Rakefile require rspec core rake task desc Run all RSpec tests RSpec Core RakeTask new spec 但这不起作用 例如 如果我尝试运
  • React 表单组件 onSubmit 处理程序不工作

    我有以下 React 组件 class Form extends React Component handleSubmit e e preventDefault let loginInput ReactDOM findDOMNode thi
  • Spring 事务因 iptables 命令而挂起

    作为进程错误处理的一部分 我们尝试使用以下 iptables 命令禁用进程与数据库计算机侦听器端口之间的通信 iptables A INPUT p tcp destination port
  • Cloud Foundry如何处理进程隔离?

    假设我使用 上提供的开源 Cloud Foundry 实现设置了自己的云cloudfoundry org http www cloudfoundry org 我部署的每个应用程序都会作为单独的用户运行吗 或者这里使用了VMWare的虚拟化技
  • MVC 中的 Bootstrap 模式,双背景 - 背景出现两次

    我在使用 jQuery 生成引导模式时注意到一个问题 在动态生成的部分视图 我的模式 中添加更多 JavaScript 会导致出现双背景 有谁知道为什么会发生这种情况 我正在使用 jquery 1 8 2 js 和 Bootstrap v3
  • 通过HTA触发宏的VBS(无法运行宏)

    我有一个 HTA 脚本 它最终触发代码的 vbs 部分来调用 VBA 宏 但由于某种原因我收到此错误 我已经确保启用了对 VBA 的信任访问 因此我觉得我的代码中的某些内容与 HTA 不兼容 这是代码 提前感谢您的宝贵时间
  • 根据特定条件连接 RxJ 中的两个可观察流

    我有两个对象流 帐户和余额 我需要根据以下内容合并 加入 两个流id and account id var accounts Rx Observable from id 1 name account 1 id 2 name account
  • VBA-获取鼠标移动事件中的标签名称

    我有以下问题 我的工作表中有很多以结构化方式命名的标签 Label1 Label2 Label9 并为所有标签分配了鼠标移动事件宏 我想获取表A1 A9中的第i个值 其中 i 是当前 触摸 的标签号 有没有一种简单的方法可以在 mouse
  • GIT:无法从存储库中删除文件

    目前 我们被迫将存储库从 Gitlab 迁移到 Github 当我们想使用 git push u origin master 将我们的存储库推送到 Github 时 不幸的是 这会导致以下错误 复制输出 1 remote error GH0
  • 开源非分发许可证[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 通常我是 A GPL 的忠实粉丝 并发布由其许可的软件 然而 这一次我认为我不能允许重新分发我的软件 因此 我正在寻找一个许可证 上面写着 1 使我的
  • Tkinter Menubutton 小部件键绑定以在同一窗口中打开菜单小部件元素

    我在菜单中创建了一个子菜单Menubutton and Menu小部件 from tkinter import root Tk def f event submenu invoke 0 mainmenu Menubutton root te
  • Microsoft Azure 帐户上的 Microsoft Visual Studio 凭据错误

    我试图将我的 Web 应用程序部署到 Microsoft Azure 当我输入 Microsoft 帐户的凭据时 出现此错误 并且我无法寻求解决方案 但是 我尝试通过 Microsoft Visual Studio 本身登录并收到相同的错误
  • 如果javascript只在特定页面上使用,为什么不应该将其放在视图中?

    In writes 不引人注目的 JS 需要考虑的其他事情 您已经这样做了 是您确实需要在应用程序中使用不显眼的 javascript 不显眼的 JS 基本上意味着您能够将页面的 绑定 抽象到资产管道中的 Javascript 文件 造成这
  • 如何允许用户从 Xamarin.Forms 标签复制和粘贴

    如何允许用户从 Xamarin Forms 标签复制和粘贴 在任何平台上单击文本 默认设置不允许突出显示 因此不允许复制和粘贴 任何帮助 将不胜感激 您可以做的是将标签包装在手势识别器中
  • javascript / jquery - 选择两个数字中较大的一个

    我正在尝试使用 javascript 选择两个数字中较大的一个 我知道我可以编写一个 if 语句 但我想知道是否有某种数学运算或其他东西可以提高效率 以下是我使用 if 语句执行此操作的方法 if a gt b c a else c b 我
  • 请求对象没有属性“accepted_renderer”

    如果出现这个问题会怎样 请求对象没有属性 accepted renderer 这些消息在我的日志中 处理此事件时遇到错误 丢弃参数 timestamp 的无效值 Expand 基本视图集类 class BaseViewSet Logging
  • Meteor JS 在客户端 html 上模拟服务器命令行

    我是 Meteor 的新手 想要制作一个简单的应用程序 我无法根据以下内容在服务器端模拟命令行http terokaisti blogspot com 2012 10 writing terminal app with meteor js
  • 使用 Windows 脚本宿主

    我正在将 Windows 脚本主机用于某种安装程序应用程序 并使用它在开始菜单中创建快捷方式 这个问题是我切换到x64环境 win7旗舰版x64 vs2010 时出现的 我添加了对 Windows 脚本宿主对象模型的引用 来自 c wind
  • 根据自定义 TreeItem 属性更改更新 TreeView

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