JTree 的某些节点的标签表示在计数后长度增加的计数器。这导致缩写(...)。想象一下,您有一棵树,其中每个节点都可以随时更改其标签大小。
树每 100 毫秒在一个单独的线程中重新绘制 (tree.repaint()) 以跟踪更改的图标和更改的标签,这些更改是跟踪事件和及时进展的结果。我尝试了一种方法,在每个树节点上用 nodeChanged() 调用替换了 repaint() 方法。树开始闪烁。
为了根据新长度更新这些节点标签,我需要做什么?我已经在扩展 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 中做什么?