java - JTree 节点标签经常变化但宽度被缓存

标签 java swing jtree

目前,我正在使用自定义 TreeCellRenderer 来处理我的 JTree 的标签和图标更改。当我需要更改几个节点上的文本时,问题就来了。 TreeCellRenderer 在显示新文本方面表现出色。但是,初始文本的宽度会被缓存并且不会更新。我试图通过覆盖 TreeCellRenderer 中的 getPreferredSize 来破解它,但由于我有 html 字符串,所以无法正常工作。我什至尝试解析标签并获取宽度,但它仍然不完美。我使用过 SwingUtilities 和 FontMetrics。

似乎使用树的支持 DefaultTreeModel.nodeChanged(TreeNode) 是更改节点的正确方法。但是,我需要有一个额外的数据结构来处理访问需要更改的节点。就个人而言,我只想更改需要更改的节点。但是,这将需要另一个数据结构来找到所有需要更新的节点。在这种情况下,围绕支持 JLabel 的大小缓存的最佳方法是什么?

最佳答案

我发现使用您建议的调用 nodeChanged 的​​方式对我来说效果最好。

关于java - JTree 节点标签经常变化但宽度被缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2255481/

相关文章:

java - 迭代 HashMap 的键范围

java - 清除双数组(我认为我做错了)

java - 使用 GlassPane 的 Java 内部透明选择窗口

java - 为什么 ToolTipManager.sharedInstance.registerComponent(tree) 没有自动完成?

java - 如何修复已弃用的 .getDate()

java - 基于字符串属性向数组添加对象?

java - JTree选择颜色

java - 以选项卡式面板作为树节点的 JTree

Java JNA : PROCESSENTRY32. szExeFile 转换为 Java 字符串时返回 "????..."

java - 如何捕获 JFrame 的关闭按钮单击事件?