Java相談室 Part4

このエントリーをはてなブックマークに追加
309優しいおにいさん
>>307
ご苦労様です。

JTreeには、ノードへのパスをオブジェクト化した、
javax.swing.tree.TreePathがあります。
TreePathオブジェクトから、そのTreeNodeを取得する
メソッドなどがあります。
今選択されているノードのTreePathを取得するメソッド
が、DefaultTreeModelのなかにあります。
また、DefaultMutableTreeNodeには、配下の全Node、
すぐ下の子供NodeなどのEnumerationを取得する方法など
もあります。
DefaultTreeModelにたいして、Nodeをつけたり外したり
すると、内部でイベント生成や通知を行うロジックが
自動的にJTreeのViewに通知を行い、表示がかわってくれ
ます。

このように、基本的にSwingでは欲しいものは大抵メソッド
として揃っているので、苦労して実装するひまがあるなら
APIライブラリを眺めてたたいてみるほうが遥かに効率的です。
(車輪の最発明が好きだというなら止めませんが。)

ということで、Javaを短期間にマスターするコツは、Cチック
にガリガリコーディングする事より、APIドキュメントを読む
ことに時間を割くことが第一だったりします。
コアAPIライブラリは、使っているうちにデザインパターンの
実装例として、OOPのテクニックを効率的に理解できる副作用
もあります。(コードの実装ではなくて、あくまでクラスの
構成や関係について。実装はあまり参考にしないほうが良いです。)

一度慣れてしまえば、ありすぎて困るとかよく言われる拡張
ライブラリの使い方なども、実はどれも似たようなものでしか
ないので、怖いもの無しになれるはずです。
その頃になれば、DefaultXXXでは物足りなくなって、自分用
カスタマイズクラスを華麗に実装できるようになるはずですよ。

ということで、頑張ってくださいませ。