SwingのJTreeでNodeの種類ごとに表示させるアイコンを変えるためには

1.まずはDefaultMutableTreeNodeを継承したオリジナルNodeを作成する。

2.そのNodeに対してNodeの種別を判断できるプロパティ(変数)を設ける。

3.更に、DefaultTreeCellRendererを継承したオリジナルTreeCellRendererを作成する。

4.getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)
をオーバライドする。


そうするとNodeを描画する度にこのメソッドが呼ばれ、パラメータで受け取っているvalueが当該Nodeになる。

5.あとは簡単、valueをオリジナルNodeにキャストしてプロパティに対してif文を書き、
 setOpenIcon、setClosedIcon、setLeafIconを用途に応じて使用すれば良い。


※注意点としてはこの時に横着せずに、elseまでしっかりと書くこと。
シングルレスレッド動作なのでelseを書かずにおくと、
elseに入れなかったNode達の設定は最後に入ったifの中で実装されている設定と同じになってしまう。

種類が増えちゃうとその分、ifが多くなっちゃうあまりイケてないプログラムだけどね。
ホントはコンポジットパターンとか使って、全部Node側に委譲させたほうがいいけど。
まあ、サンプルてきな。