我有一个JTree
我提供了实现TreeNode
界面的对象,还有一个自定义TreeModel
来显示它们(不使用DefaultMutableTreeNode
)。我想改变一些节点的文本颜色。除了javax.swing.tree.DefaultTreeCellRenderer.setTextNonSelectionColor(Color newColor)
之外,我在文档中找不到任何内容,但它会不加区分地改变所有内容,而我只需要一些节点(特别是断开的链接,即在其上找不到相应文件的节点)磁盘,应该是灰色的,其余的应该是默认的)。可以做到,怎么做?
答案 0 :(得分:3)
你接近你的答案。您需要做的是对DefaultTreeCellRenderer
进行Sub Class并覆盖一些DefaultTreeCellRenderer
的方法。然后确保告诉树使用自定义单元格渲染器。
您需要做的是有一些状态变量来指示链接是否被破坏,并根据该变量设置节点的颜色。
答案 1 :(得分:0)
您还可以查看org.netbeans.swing.outline
中提到的answer。 TableCellRenderer
和RenderDataProvider
接口的普通扩展使得自定义树中行的外观变得特别容易。