我知道這個問題以前曾以類似的方式問過,也許是圖標。 我想要的是改變樹節點的文本的顏色。 事實上,我有一個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/)。 –