LayoutPanelを親LayoutPanel(RootLayoutPanel、画面、ブラウザページ)の中央に配置するにはどうすればよいですか?内側のパネルが固定サイズであると仮定すると、外側のパネルは柔軟性があり、サイズを変更します(ブラウザウィンドウを使用)。
Vaadinでは、1行のコマンドです。
(VerticalLayout)outerPane).setComponentAlignment(innerPane,
Alignment.MIDDLE_CENTER);
GWTに相当するものは何ですか?
GWT Layout.Alignment列挙型は、BEGINENDSTRETCHのみを提供します。
不十分。画面中央の配置は、小さいフォーム、ダイアログボックス、警告メッセージ、ログイン画面などを表示するために不可欠です。
GWTフォーラムへの私の投稿の詳細
ありがとうございます
---更新(27.2.2012)---------------
提案された手法を使用するには(setWidgetLeftRight()およびsetWidgetTopBottom()を使用)、実際には、外部コンポーネントに対する内部コンポーネントのNW位置(x、y)を計算し、外部コンテナーまたは内部コンテナー(コンテンツの高さ)のサイズを変更するたびに計算する必要があります。
したがって、GWTがセンタリングをサポートしておらず、最新バージョンでもサポートしていないように思われる場合は、さらに多くのコーディングが必要になります。
outerComponent.setWidgetLeftRight(innerComponent, x, PX, x, PX);
outerComponent.setWidgetTopBottom(innerComponent, y, PX, y, PX);
x、yは次のように計算されます:
x =(w1 – w2)/ 2
y =(h1 – h2)/ 2
ここで、
w1-外部コンポーネントの幅(可変、簡単に取得できますか?)
h1-外部コンポーネントの高さ(可変、簡単)取得するには?)
w2-内側中心のコンポーネントの幅(固定)
h2-内側中心のコンポーネントの高さ(内容によって異なりますが、取得が難しい場合があります)
すべてできればピクセル(PX?)またはEMで。%と混合すると、より多くの変換を行う必要があります。
サイズ変更イベントが発生するたびに、座標を再計算する必要があります(w1、h1の変更)。
内部コンテンツを変更するたびに、座標を再計算する必要があります(h2が変更されます)。
変装したほぼ絶対的なレイアウト(AbsolutePanel)です。
CSSソリューション?このサーバーでいくつかの例を見つけましたが、解決済みとしてマークされたものはありません。垂直方向と水平方向の両方のセンタリングと柔軟な内部コンポーネントの高さはありません。
CSSベースのレイアウトソリューションを好まない理由:
- クロスブラウザの問題が発生しやすい。GWTはここでは役に立ちません。
- コードとCSSでレイアウトを混在させることは、設計上の悪い決定だと思います。CSSは、「装飾的な」宣言(フォントのサイズと色、余白、パディング)に残しておくのが最適です。
- CSSレイアウトに関する私自身の悪い経験。すべてをまとめる前に、壊れやすく、デバッグが難しく、多くの頭痛の種があります。避けるのが最善です。私はGWTに大きな期待を寄せていました。
私はこのコードベースのソリューションについて考えています:
- ウィジェットの新しいサブクラス?パネル?レイアウト?成分?(内部コンポーネント)
- RequiredResizeexpectを実装し、onResize()コールバックメソッドを実装します
- 可変次元(w1、h1、h2)の実際の値を取得します。どのように?
- 内部コンポーネントの新しい座標を設定します。どのように?
これらの前提に基づいてソリューションを提供する人を指します:)