JTree の一部のノードのラベルは、カウント後に長さが増加するカウンターを表します。その結果、省略形 (...) になります。すべてのノードがいつでもラベル サイズを変更できるツリーがあるとします。
ツリーは、別のスレッドで 100 ミリ秒ごとに再描画 (tree.repaint()) され、追跡されたイベントと時間の経過の結果であるアイコンの変更とラベルの変更を追跡します。すべてのツリー ノードで repaint() メソッドを nodeChanged() 呼び出しに置き換えるアプローチを試みました。ツリーがちらつき始めます。
新しい長さに応じてノード ラベルを更新するには、どうすればよいですか? 私はすでに DefaultTreeCellRenderer を拡張しています。
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
DefaultMutableTreeNode node;
Object nodeValue;
TestComponent currentComponent;
super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
node = (DefaultMutableTreeNode) value;
nodeValue = node.getUserObject();
if(nodeValue instanceof TestComponent) {
currentComponent = (TestComponent) nodeValue;
setText(currentComponent.getLabel());
}
return this;
}
「setText」の問題を「修正」するには、CellRenderer内で何をすべきですか?