我知道这个问题以前曾以类似的方式问过,也许是图标。 我想要的是改变树节点的文本的颜色。 事实上,我有一个jTree,我想要设置三个不同的颜色,默认的一个,红色和橙色。JTree单节点前景
的purposse是,如果我比那棵树用另一个,突出两棵树之间的差异(默认意味着没有差异,橙色表示只是分值diff和红色表示节点是完全不同的)
我有两个功能,其中一个trasverse的“原始”树寻找从相比一个节点,并返回false如果{节点}没有找到:
private Boolean findNodeInRefTree(DefaultTreeModel model, Object root, DefaultMutableTreeNode node){
Boolean bRet = false;
for (int i = 0; ((i < model.getChildCount(root))&&(!bRet)); i++){
DefaultMutableTreeNode child = (DefaultMutableTreeNode) model.getChild(root, i);
bRet = node.getUserObject().equals(child.getUserObject());
if (!bRet)
bRet = findNodeInRefTree(model, child, node);
}//for:i
return bRet;
}
而另一个功能trasverse“比较”树,并调用上述为每个节点。
private void compareTrees(TreeModel model, Object root){
for (int i = 0; i < model.getChildCount(root); i++){
DefaultMutableTreeNode child = (DefaultMutableTreeNode) model.getChild(root, i);
//find if node exists in original
DefaultTreeModel modelRef = (DefaultTreeModel) _ref.getModel();
if (!findNodeInRefTree(modelRef, modelRef.getRoot(), child)){
DefaultTreeCellRenderer render = (DefaultTreeCellRenderer) _temp.getCellRenderer();
render.setForeground(Color.RED);
_temp.setCellRenderer(render);
}//fi
_new.insertNodeInto((DefaultMutableTreeNode) child, (DefaultMutableTreeNode) root, i);
compareTrees(model, child);
}//for:i
}
然后,当它结束我刚才设置的新树{} _new到新树{} _temp的模型,和树添加到其面板。但树没有任何不同的颜色。很明显,我正在测试不同的树木。任何建议?
为了更好地帮助越早,张贴[SSCCE(http://sscce.org/)。 –