2010-05-24 55 views
3

我有一个JTree,我给实现了TreeNode接口的对象和自定义TreeModel来显示它们(不使用DefaultMutableTreeNode)。我想改变一些节点的文字颜色。除了javax.swing.tree.DefaultTreeCellRenderer.setTextNonSelectionColor(Color newColor)之外,我找不到文档中的任何内容,但它会不加区分地改变一切,并且我只需要它用于某些节点(特别是断开的链接,即在磁盘上找不到相应文件的节点,应该是灰色,其余的应该是默认的)。它可以做到,以及如何?着色JTree的TreeNodes

+0

另请参阅TreeIconDemo2中的_如何使用Trees_ http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html – trashgod 2010-05-24 04:34:59

+4

Doh!谢谢! “因为'DefaultTreeCellRenderer'是'JLabel'的子类,所以你可以使用任何'JLabel'方法(比如'setIcon')来定制'DefaultTreeCellRenderer'。非常感谢你和@Justin。 – Amadan 2010-05-24 04:42:45

+0

你确切地说! – trashgod 2010-05-24 16:06:54

回答

3

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

你将需要做的是有一些状态变量,指示链接是否中断,并基于此设置节点的颜色。

+0

显然,状态变量不是问题:),但纯粹是JTree的接口......无论如何,你的意思是'\t getTreeCellRendererComponent'?是否就像从该函数返回JLabel一样简单?几个小时后,我会得到一点空闲时间。谢谢... – Amadan 2010-05-24 04:38:02