JTree:如何获取节点的字体/文本颜色?

时间:2014-11-04 07:55:43

标签: java swing jtree

我有以下代码:

tree = getTreeComponent(BLA)

model = tree.getModel();
root = tree.getModel().getRoot();
childCount = tree.getModel().getChildCount(root);

childList = tree.getModel().getChild(root,x);

print childList

我可以将树节点作为文本而不是字体/文本颜色节点。

你能给我一些建议吗?

1 个答案:

答案 0 :(得分:3)

节点的外观与模型分离。 TreeCellRenderer负责呈现树的节点,可以使用JTree.setCellRenderer()设置。

因此,如果您想了解节点的FontColor,请咨询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。指定有意义的参数值(例如,它不应该被选中,因为它通常会反转颜色,它不应该有焦点,因为它也可能会改变颜色)。