目前,我正在使用一个自定义的TreeCellRenderer来处理我的JTree的标签和图标更改。当我需要更改几个节点上的文本时,问题就出现了。TreeCellRenderer很好用,因为新文本会显示出来。但是,来自初始文本的宽度将被缓存,并且不会更新。我试图通过在TreeCellRenderer中重写getPreferredSize来破解它,但由于我有html字符串,所以无法正常工作。我甚至尝试过解析标签并获得宽度,但它仍然不是很完美。我用过SwingUtilities和FontMetrics。
似乎使用树的支持DefaultTreeModel.nodeChanged(TreeNode)是更改节点的正确方法。但是,我需要一个额外的数据结构来处理对需要更改的节点的访问。就我个人而言,我只想更改需要更改的节点。但是,这将需要另一个数据结构来查找需要更新的所有节点。在这种情况下,绕过支持JLabel缓存大小的最佳方法是什么?
发布于 2010-02-13 23:29:49
我发现使用您建议的调用nodeChanged的方法对我来说效果最好。
https://stackoverflow.com/questions/2255481
复制相似问题