【发布时间】:2013-03-30 19:27:50
【问题描述】:
我正在尝试实现FP-Tree。所以我使用了JTree。我已经成功创建了我的树。但我需要向我的节点添加两个自定义属性,“Label”和“LabelCount”
而且我还需要在树中打印它。这可能吗?
【问题讨论】:
-
DefaultMutableTreeNode 采用“用户对象”(它用作呈现节点的默认值)。您最好的选择是创建一个简单的 Property 对象并应用于每个节点
我正在尝试实现FP-Tree。所以我使用了JTree。我已经成功创建了我的树。但我需要向我的节点添加两个自定义属性,“Label”和“LabelCount”
而且我还需要在树中打印它。这可能吗?
【问题讨论】:
使用 DefaultMutableTreeNode 作为节点并向其添加用户对象,而不是将您自己的 TreeCellRenderer 实现添加到树中 (setTreecellRenderer(...)
在您的 TreeCellRenderer 中实现 getTreeCellRendererComponent 方法。
Component getTreeCellRendererComponent(JTree tree,
Object value,
boolean selected,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus)
Object 值参数将是包含您的用户对象的 DefaultMutableTreeNode。
您可以只返回一个包含所需文本的 JLabel(或任何其他组件)。
出于性能原因,您可以重复使用您的 JLabel,无需在每次调用该方法时都创建一个新的。
【讨论】: