0

我有一些自定义的 JTree。该树具有带有自定义图标的节点。我还有一个类,它DefaultTreeCellRenderer的方法getTreeCellRendererComponent很简单,如下所示:

super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
MyTreeNode node = ((MyTreeNode) value);
Icon icon = node.getIcon();
setIcon(icon);
return this;

有用。我的树节点将使用ICON TEXT格式的自定义图标呈现。但!有没有办法在我的节点中放置两个图标!我想要一个看起来像这样的节点:ICON TEXT ANOTHER_JLABEL_WITH_IMAGE.

怎么做?

4

4 回答 4

2

您应该创建自己的TreeCellRenderer扩展自JPanel.

这样,您可以定义自己的布局要求并添加自己的组件来支持您的要求

于 2012-10-16T09:44:29.283 回答
2

您还可以创建一个组合两个(或更多)其他图标的图标。参见例如http://tips4java.wordpress.com/2009/03/29/compound-icon/

于 2012-10-16T10:50:37.907 回答
1

用于呈现树节点的默认组件是 JLabel。因此,您可以访问该setIcon方法。

但是如果你想为一个节点设置两个图标,你需要创建一个 JPanel,里面有两个标签。

于 2012-10-16T09:51:01.650 回答
1
  • (J)Component/ JLabel(由返回Renderer)没有LayoutManager在 API 中实现

  • rightJLabelTextand的构造函数Icon,没有其他的地方Icon

  • 基本上每个JComponents都是容器,部分Containers已经LayoutManager在 API ( JFrame, JPanel) 中实现,你可以把任何一个放到JComponent另一个

  • 例如

  • camickr的出色解决方法,尤其是Compound Icon

于 2012-10-16T09:59:14.233 回答