Java 着色JTree';三叶草

Java 着色JTree';三叶草,java,swing,jtree,Java,Swing,Jtree,我有一个JTree,我给了实现TreeNode接口的对象,还有一个自定义TreeModel来显示它们(不使用DefaultMutableTreeNode)。我想更改一些节点的文本颜色。我在文档中找不到任何东西,除了javax.swing.tree.DefaultTreeCellRenderer.setTextNonSelectionColor(Color newColor),但它会不加区别地更改所有内容,我只需要在某些节点上使用它(具体来说,断开的链接,即磁盘上找不到其相应文件的节点,应灰显,其

我有一个
JTree
,我给了实现
TreeNode
接口的对象,还有一个自定义
TreeModel
来显示它们(不使用
DefaultMutableTreeNode
)。我想更改一些节点的文本颜色。我在文档中找不到任何东西,除了
javax.swing.tree.DefaultTreeCellRenderer.setTextNonSelectionColor(Color newColor)
,但它会不加区别地更改所有内容,我只需要在某些节点上使用它(具体来说,断开的链接,即磁盘上找不到其相应文件的节点,应灰显,其余应为默认值)。可以这样做吗?如何做?

您已接近您的答案。您需要做的是对
DefaultTreeCellRenderer
进行子类化,并覆盖一些
DefaultTreeCellRenderer
的方法。然后确保告诉树使用自定义单元格渲染器


您需要做的是使用一些状态变量来指示链接是否断开,并在此基础上设置节点的颜色。

您也可以查看,如本文所述。的普通扩展和接口使自定义树中行的外观变得特别容易。

另请参见
TreeCondemo2DefaultTreeCellRenderer
JLabel
的一个子类,你可以使用任何
JLabel
方法,比如
setIcon
,来定制
DefaultTreeCellRenderer
“非常感谢你和@Justin。显然,状态变量不是问题:),但是纯粹的
JTree
的接口。。。不管怎样,你是说“GetTreeCellRenderComponent”吗?它是否像从该函数返回JLabel那样简单?我会在几个小时内,等我有空的时候再试试。谢谢