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側に委譲させたほうがいいけど。
まあ、サンプルてきな。