2017-11-16 22 views
-1

EclipseでWindowBuilderを使用してSWT GUIを構築しています。私はこの物を知っていましたが、Javaから約8年間は離れています。簡単なSWTレイアウト

私がしようとしていることはよくあることですが、私がレイアウトシステムと戦っているという事実は、間違った方向に向かっていると言います。

私が欲しいのは、3つのボタンがあるリスト(標準+/- /編集ボタン)です。 ボタンが固定された高さになり、残りのすべての垂直スペースがリストに使用されるようにします。同様に、水平スペースはリスト/ボタンを含むコンポジットとフォームを含むコンポジットの間で分割されます。

リスト+ボタンの垂直レイアウトだけに焦点を当てます。これは、同じテクニックが水平レイアウトに適用されることになると確信しています。

私は外側のコンポジットの塗りつぶしレイアウト(垂直)を持っています。このコンポジットには、ListおよびInner Composite with Fill Layout(Horizo​​ntal)が含まれています。内側のコンポジットには3つのボタンがあります。

レイアウトでボタンのサイズを垂直方向に変更したくありません。 30ピクセルに固定し、残りのすべての垂直スペースがリストに移動するようにします。

内部コンポジットにリサイズリスナーを入れて、サイズを30に設定するためにsetSizeを使用しました。これは機能しましたが、未使用のスペースをリストに再割り当てしませんでした。私は再レイアウトを強制しようとしましたが、うまくいかないようでした。

明らかに、私は一度知っていた基本的な概念が欠けています。

任意のポインタ?ありがとう!

+0

レイアウトを使用している場合は、レイアウトによって通常はサイズがオーバーライドされるため、何にでも 'setSize'を呼び出すべきではありません。あなたは、 'GridLayout'のようなレイアウトを使って、サイジングの意思決定をより細かく制御したいでしょう。私たちに[mcve] –

答えて

0

私はこれを理解することができました。 greg-449が指摘したように、キーは外部コンポジットにグリッドレイアウトを使用し、内部コントロールのLayoutDataでgrabAllVerticalSpaceをTrueに設定し、verticalAlignmentをFILLに設定することです。ボタンの行については、verticalAlignmentをBOTTOMに設定します(おそらく必要ありません)。heightHintとminimumHeightを30に設定します。

親コンポジットの水平方向の配置に似た方法を採用しました。私は意図した。