JTree节点标签经常更改,但缓存宽度

ini*_*ero 7 java swing jtree

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

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

Jef*_*rey 2

我发现使用您建议的调用 nodeChanged 的​​方式最适合我。