現在、カスタム TreeCellRenderer を使用して、JTree のラベルとアイコンの変更を処理しています。問題は、いくつかのノードでテキストを変更する必要があるときに発生します。TreeCellRenderer は、新しいテキストが表示されるという点でうまく機能します。ただし、最初のテキストの幅はキャッシュされ、更新されません。TreeCellRenderer で getPreferredSize をオーバーライドしてハッキングしようとしましたが、html 文字列があるため、正しく機能していません。タグを解析して幅を取得しようとしましたが、まだ完全ではありません。私は SwingUtilities と FontMetrics を使用しました。
ノードを変更するには、ツリーのバッキング DefaultTreeModel.nodeChanged(TreeNode) を使用するのが適切な方法のようです。ただし、変更が必要なノードへのアクセスを処理するには、追加のデータ構造が必要です。個人的には、変更が必要なノードだけを変更したいと考えています。しかし、更新が必要なすべてのノードを見つけるには、別のデータ構造が必要になります。この状況でバッキング JLabel のサイズ キャッシングを回避する最善の方法は何ですか?