SwingとSWTは全然チガウネ

SWTウィジェットの継承をしないように設計されていて、Swingは継承によって拡張を行うように設計されている感じで、操作方法や作り方がかなり違います。

個人的には、SWTのほうが分かりやすくて好きです。でも、拡張性やOOPを考えるとSwingはそれはそれで正しいようなことも分かります。しかし、どうも好きになれません。
たとえば、リストボックスを扱うJListというクラスに、要素を追加するメソッドがないんです。最初なぜないのか分からず、調べてみると、どうやらListModelクラスを継承して作らないといけないらしく、DefaultListModel#addElementで実装されていました。
たとえば、ツリーを扱うJTreeというクラスで、ツリー要素の右斜め上に要素ごとに違ったツールチップを表示させたいと思ったときに、どのオブジェクトにツールチップを設定していいかが、ぱっと見で全然分からないのです。調べてみると、どうやら、TreeCellRenderer#getTreeCellRendererComponentをオーバーライドして、返すコンポーネントにその要素用のツールチップをsetToolTipTextするとツリー要素ごとのツールチップを表示できるので、そういうクラスのインスタンスをJTreeへsetCellRendererで設定して、ツールチップの表示位置は、JTree#getToolTipLocationをオーバーライドしてツールチップを表示させる位置をPointクラスで返して、JTreeのツールチップを有効にするためにsetToolTipでnull以外のデータを一度設定しておかないといけないようで、なんだかものすごく面倒くさいです。
いやー、これはマジでSwingに詳しい人しかSwing使えないじゃんと驚愕しました。SWTはクラスのメソッド一覧を見ただけですぐに使えました。
自称Java厨としては、マジでSwingに詳しい人になって、Swingの拡張性と設計の素晴らしさについて語れ、ぜひ君もマジでSwingに詳しい人になるといいよ! と言えるようにならないといけません。