我有以下代码:
tree = getTreeComponent(BLA)
model = tree.getModel();
root = tree.getModel().getRoot();
childCount = tree.getModel().getChildCount(root);
childList = tree.getModel().getChild(root,x);
print childList
我可以将树节点作为文本而不是字体/文本颜色节点。
你能给我一些建议吗?
答案 0 :(得分:3)
节点的外观与模型分离。 TreeCellRenderer
负责呈现树的节点,可以使用JTree.setCellRenderer()
设置。
因此,如果您想了解节点的Font
和Color
,请咨询JTree
的渲染器。例如:
Component c = tree.getCellRenderer()
.getTreeCellRendererComponent(tree, node, false, false, false, 0, false);
Font font = c.getFont(); // Font used to render the node
Color color = c.getForeground(); // Foreground Color used to render the node
渲染器的getTreeCellRendererComponent()
返回一个Component
,用于绘制节点。
getTreeCellRendererComponent()
的参数是:
JTree tree, Object value, boolean selected, boolean expanded,
boolean leaf, int row, boolean hasFocus
将不同的值传递给这些参数可能会导致返回的Component
具有不同的Font
和/或Color
。指定有意义的参数值(例如,它不应该被选中,因为它通常会反转颜色,它不应该有焦点,因为它也可能会改变颜色)。