当機能の基本GUIライブラリでは、主要な基本GUIライブラリをライトウェイトコンポーネントとして提供しています。
ライトウェイトコンポーネントを利用する利点は、次のとおりです。
ライトウェイトコンポーネントは、paint()メソッドでこれらの領域にレンダリングしないだけで、現在透明な領域を持つことができます。
ライトウェイトコンポーネントは、ネイティブデータ構造またはピアクラスを必要としないという点で、"軽い"です。
ライトウェイトコンポーネントにネイティブコードは必要なく、その処理は一般的な Javaコードに100%実装され、プラットフォームに依存しません。
JDKのSwingライブラリもライトウェイトコンポーネントとして提供されています。
ただし、ライトウェイトコンポーネントを配置するコンテナには以下のような特殊な条件が必要です。
ライトウェイトコンポーネントを、ダブルバッファリングを使って描画していないコンテナ上に配置した場合は、描画時に顕著にちらついて見えます。
ライトウェイト・コンポーネントのコンテナが、super.paint を呼び出さない paint メソッドを実装している場合は、ライトウェイトコンポーネントは表示されません。言い換えると、何らかの描画(例えば、表示領域のまわりに四角の枠を描画するなど)を行うコンテナを実装する場合は、必ずコンテナの paint メソッドで super.paint を呼び出す必要があります。
ライトウェイトコンポーネントを配置するコンテナには上記の理由のため、ダブルバッファリングを使って描画を行う機能を持つ必要があります。
JBKではダブルバッファリングの機能を持つコンテナとしてJFPanelクラスを提供しています。
主要な基本GUIライブラリを利用する場合は、コンテナとしてJFPanelクラスを利用するか、ダブルバッファリングの機能を持つコンテナを利用する必要があります。
注意
ライトウェイトコンポーネントとヘビーウェイトコンポーネントを混在させて使用する場合
GUIライブラリを利用して画面を作成される場合は、ライトウェイトコンポーネントのみの使用をお勧めします。
ライトウェイトコンポーネントとヘビーウェイトコンポーネントを混在させて使用するときは、コンポーネントが重複する配置の場合に、指定した順序に関わらずヘビーウェイトコンポーネントが常に上部になることに注意してください。