【发布时间】:2011-10-05 13:44:13
【问题描述】:
我有一些 DefaultMutableTreeNode。 在程序运行时,我可以更改文本并重新验证它。 但是如果文本太长,比如文本“tested”,文本会显示为“te...”。
如何更改?
谢谢
【问题讨论】:
-
如果您正确更改文本,即确保通知 model 文本应以全宽显示,前提是树宽足够大
我有一些 DefaultMutableTreeNode。 在程序运行时,我可以更改文本并重新验证它。 但是如果文本太长,比如文本“tested”,文本会显示为“te...”。
如何更改?
谢谢
【问题讨论】:
你必须阅读tutorial about JTree,以及如何使用TreeCellRenderer的示例
如果您真的要提问,请更新您的问题并在SSCCE form 中添加代码
【讨论】:
根本原因是树节点的布局被缓存并且缓存没有正确更新。可能f.i。如果节点在模型脚下发生更改,请取消注释 nodeChanged 以查看差异
JTree tree = new JTree();
DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree.getModel().getRoot();
int index = 0;
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
String result = "\n";
Enumeration<?> enumer = root.preorderEnumeration();
while (enumer.hasMoreElements()) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) enumer.nextElement();
String nodeValue = String.valueOf(node.getUserObject());
node.setUserObject(nodeValue + ": " + index++);
//model.nodeChanged(node);
}
您的上下文中的确切原因可能会有所不同,没有 sscce 就无法判断
【讨论】: