Swing
従って、たとえば、全てのSwingコンポーネントは、(AWTの)Containerで定義されたcomponent.paint()の呼び出しに応じて、自身をグラフィック・デバイスに描画する。しかし、その描画をOS固有の「重い」(heavy weight)ウィジェットに委任するAWTコンポーネントとは異なり、Swingコンポーネントは自身の描画は自分の責任として行う。
この「置き換え」(transposition)と「切り離し」(decoupling)は単に目に見える部分だけのことではなく、そのコンポーネント包含階層内で発出されるイベントにおけるOS非依存の意味(semantics)の管理と応用にもいえることである。一般的にいって、Swingアーキテクチャは、OSのGUIが持っている意味に対して与えられた様々な表現形式を、単純ではあるが一般化されたパターンに対応づける仕事をAWTコンテナに委任している。その一般化されたプラットフォーム上で構築すれば、JComponentモデルの形でリッチで複雑なGUIの意味(semantics)を組み上げたことになる。