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