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ます. しかし!ノードに 2 つのアイコンを配置する方法はありますか? 次のようなノードが必要ですICON TEXT ANOTHER_JLABEL_WITH_IMAGE

どうやってするの?

4

4 に答える 4

2

TreeCellRendererのようなものから拡張する独自のものを作成する必要がありますJPanel

このようにして、独自のレイアウト要件を定義し、要件をサポートする独自のコンポーネントを追加できます

于 2012-10-16T09:44:29.283 に答える
2

2 つ (またはそれ以上) の他のアイコンを組み合わせたアイコンを作成することもできます。たとえば、http://tips4java.wordpress.com/2009/03/29/compound-icon/を参照してください

于 2012-10-16T10:50:37.907 に答える
1

Tree ノードのレンダリングに使用されるデフォルトのコンポーネントは JLabel です。したがって、メソッドにアクセスできますsetIcon

ただし、ノードに 2 つのアイコンを設定する場合は、2 つのラベルを含む JPanel を作成する必要があります。

于 2012-10-16T09:51:01.650 に答える
1
  • (J)Component/ JLabel( によって返される) はAPI にRenderer何も実装していませんLayoutManager

  • rightJLabelには and のコンストラクタがTextありIcon、別の場所はありませんIcon

  • 基本的にすべてJComponentsがコンテナでもあり、一部はAPI ( 、 ) にContainers実装されており、任意のものを別のコンテナに入れることができますLayoutManagerJFrameJPanelJComponent

  • 例えば

  • 特にcamickrによる優れた回避策Compound Icon

于 2012-10-16T09:59:14.233 に答える