【问题标题】:Colouring JTree's TreeNodes为 JTree 的 TreeNode 着色
【发布时间】:2010-05-24 03:28:20
【问题描述】:

我有一个JTree,我为它提供了实现TreeNode 接口的对象,以及一个自定义TreeModel 来显示它们(不使用DefaultMutableTreeNode)。我想更改某些节点的文本颜色。我在文档中找不到任何东西,除了javax.swing.tree.DefaultTreeCellRenderer.setTextNonSelectionColor(Color newColor),但它会不加选择地改变一切,我只需要一些节点(特别是断开的链接,即在磁盘上找不到相应文件的节点,应该是灰色的,其余的应该是默认的)。能做到吗,怎么做?

【问题讨论】:

  • 噢!谢谢! “因为DefaultTreeCellRendererJLabel 的子类,所以您可以使用任何JLabel 方法——例如setIcon——来自定义DefaultTreeCellRenderer。”非常感谢你和@Justin。

标签: java swing jtree


【解决方案1】:

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

你需要做的是有一些状态变量来指示链接是否断开,并根据它设置节点的颜色。

【讨论】:

  • 显然,状态变量不是问题 :),但纯粹是JTree 的接口......无论如何,你的意思是 `getTreeCellRendererComponent` 吗?是否像从该函数返回 JLabel 一样简单?几个小时后我有空的时候会试试。谢谢...
【解决方案2】:

您还可以查看org.netbeans.swing.outline,在此answer 中提到。 TableCellRendererRenderDataProvider 接口的普通扩展使得自定义树中行的外观变得特别容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 2016-11-15
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多