し上を行く JTree を表示したい,の巻
2000.11.28 新規

ここで扱っている「少し上を行く JTree 」とは、文字列と一緒にアイコンを表示させるというものです。
というか、ちょっとネタ切れです。すみません。 要点は ListCellRenderer を使用したときの「 少し上を行く JList 」と、ほぼ同じです。


「SampleListCellRenderer.java」のソースコード
import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;

/**
 * ツリー内にある各ノードの描画方法を決定するクラスです.
 * 
 * @author Musi_chan
 * (Musi_chan@cool.biglobe.ne.jp)
 * @version 2000/11/28 17:03
 */
public class MyTreeCellRenderer extends DefaultTreeCellRenderer {
/******************************************************************************
  フィールド
******************************************************************************/

/******************************************************************************
  コンストラクタ
******************************************************************************/

/******************************************************************************
  メソッド
******************************************************************************/
  /**
   * ツリー内のノードを描画方法を決定するメソッドです.
   * 
   * @param t ペイントしているツリー
   * @param value 表示される値
   * @param selected ノードが選択された場合にtrue
   * @param expanded 展開されている場合にtrue
   * @param leaf 要素が葉の場合にtrue
   * @param row ノードのインデックス
   * @param hasFocus 指定のノードにフォーカスがある場合にtrue
   * @return 指定の値を描画するpaint()メソッドがあるコンポーネント
   * @see javax.swing.tree.TreeCellRenderer
   * @see javax.swing.tree.DefaultTreeCellRenderer
   */
  public Component getTreeCellRendererComponent(JTree t,Object value
    ,boolean selected,boolean expanded,boolean leaf,int row,boolean hasFocus) {

    // ツリー内のノード
    Component c;
    // 表示文字列保持用ローカル変数
    String str;

    // 表示文字列にキャスト
    str=""+value;
    // ツリー内のノードを取得
    c=super.getTreeCellRendererComponent(t,str,selected,expanded,leaf
      ,row,hasFocus);

    // 表示アイコンの設定
    if(str.startsWith("Musi_chan")) {
      setIcon(/*ImageIcon を用意してください*/);
    } else {
      setIcon(/*ImageIcon を用意してください*/);
    }
    // 好みによって文字列の位置を調節
    setVerticalTextPosition(SwingConstants.BOTTOM);

    return c;
  }
}

戻る