詳細アイコンレイアウト・コンポーネントとストレッチ

デフォルトでは、ADF Facesテクノロジを使用するプロジェクトでJSFページを作成すると、次に示すように、af:documentタグとaf:formタグがJDeveloperによって自動的に.jspxページ・ファイルに追加されます。

<f:view>
  <af:document..>
    <af:form..></af:form>
  </af:document>
</f:view>

af:documentタグは、ADF Facesコンポーネントを使用するすべてのページに必要です。ページ・コンテンツを構成するあらゆるコンポーネントは、af:formに挿入する必要があります。ほとんどの場合、ページにはストレッチされたコンテンツを使用するため、af:documentによりストレッチ可能で子コンポーネントをストレッチできる単一のルート・コンポーネントから開始します。ルート・コンポーネントには、ページのレイアウトとコンテンツを構成する他のすべての子コンポーネントが格納されます。

JDeveloperでは、デフォルトでaf:documentmaximized属性がtrueに設定されます。これにより、ルート・コンポーネントがストレッチされてブラウザの表示可能領域全体を使用できるようになります(使用されているルート・コンポーネントがストレッチ可能な場合)。ストレッチされたページ・コンテンツのルート・コンポーネントとして使用できるレイアウト・コンポーネントには、パネル・ストレッチ・レイアウト、パネル・スプリッタおよび装飾ボックスなどがあります。実行時には、子を一緒にストレッチできるルート・コンポーネントが1つのため、ページ・コンテンツはブラウザ・ウィンドウに収まるようにストレッチされます。ユーザーがウィンドウをサイズ変更すると、ページ・コンテンツはブラウザの使用可能領域に収まるようにサイズ変更されます。

他のほとんどのレイアウト・コンポーネント(パネル・グループ・レイアウト、パネル・フォーム・レイアウト、パネル枠線レイアウトなど)は、子コンポーネントをストレッチできません。特定の条件が満たされる場合にのみ子をストレッチできるレイアウト・コンポーネント(パネル・アコーディオン、パネル・タブなど)もいくつかあります。

パネル・ストレッチ・レイアウト、パネル・スプリッタおよび装飾ボックスは、その子コンポーネント(表、その他のレイアウト・コンポーネント、リージョンなど)をストレッチできますが、すべてのレイアウト・コンポーネントをストレッチできるわけではありません。次のレイアウト・コンポーネントは、親のストレッチ・コンポーネントによってストレッチされます。

注意: コンポーネントをストレッチするためにinlineStyle属性で幅または高さの値を設定する必要はありません。値を設定すると、異なるWebブラウザ間でページ表示の一貫性がなくなります。

次のレイアウト・コンポーネントは、親のストレッチ・コンポーネントによってストレッチされません。

ストレッチに対応しないレイアウト・コンポーネントをストレッチ・コンポーネント内で使用する必要がある場合は、最初に、非ストレッチ・コンポーネントを遷移コンポーネント内にラップする必要があります。遷移コンポーネントとは、たとえば、layout="scroll"またはlayout="vertical"が設定されているパネル・グループ・レイアウトなど、その子コンポーネントはストレッチされませんが、そのコンポーネント自体はストレッチ可能なコンポーネントを指します。

つまり、ブラウザ間でページ・コンテンツ表示が一貫した状態で、必要なレイアウトを構成するには、ルート・コンポーネントから開始し、ストレッチがサポートされているコンポーネントと子コンポーネントをストレッチするコンポーネントの組合せを使用して、ストレッチ可能な構造を作成することをお薦めします。このストレッチ可能な構造に、ストレッチできるコンポーネント(ストレッチ可能な表またはレイアウト・コンポーネントなど)を挿入するか、layout="scroll"またはlayout="vertical"を設定したパネル・グループ・レイアウトを挿入し、ストレッチされないフロー・コンポーネントの領域を作成することで、ページ・コンテンツを作成します。実行時には、af:document内で最大化された単一のルート・コンポーネントが、ブラウザ・ウィンドウとともにストレッチまたはサイズ変更されます。ルート・コンポーネント内のコンテンツは、遷移コンポーネントに到達するまで、ストレッチ可能な構造のコンポーネント階層で下へストレッチまたはサイズ変更されます。遷移コンポーネントに到達すると、標準的なブラウザ・フローとレイアウトが継承され、遷移コンポーネント内のコンテンツは、親ストレッチ・コンポーネントによって自動的にストレッチされるかわりにフローします。このレイアウト作成プロセスにより、ストレッチされたコンテンツとフロー・コンテンツが常に必要に応じて構成されます。

注意: layout="scroll"を設定したパネル・グループ・レイアウトのネスト・レイヤーを使用することはお薦めしません。使用すると、複数のスクロール・バーがユーザーに表示され、使用されることになります。