SWT

2011-12-28 13 views
3

に固定幅のコントロールに次のコントロールを拡大し、水平にするためにどのように私は、次の達成したいと思います:SWT

horizontal expansion

1固定幅の制御がいっぱいに水平方向に拡大してコントロールに隣接している

利用可能なスペース。次のコードを使用して

vertical expansion

::私はすでにこの垂直を達成するためにGridLayoutを使用することができる午前

parent.setLayout(new GridLayout()); 

Button button1 = new Button(parent, SWT.PUSH); 
button1.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false)); 
button1.setText("First"); 

Button button2 = new Button(parent, SWT.PUSH); 
button2.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); 
button2.setText("Second"); 

は、水平方向のバージョンを行う方法はあります明示的に列の数を指定する必要はありませんか?他のGUIツールキット(Android、QT、GTKなど)は、このようなことを容易にします。

現在、私の横解決策はこれです:

parent.setLayout(new GridLayout(2, false)); 

Button button1 = new Button(parent, SWT.PUSH); 
button1.setLayoutData(new GridData(GridData.BEGINNING, GridData.FILL, false, true)); 
button1.setText("First"); 

Button button2 = new Button(parent, SWT.PUSH); 
button2.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); 
button2.setText("Second"); 
+0

代わりに、[MigLayout](http://www.miglayout.com/)を使用すると、レイアウトの問題が大量に解決されます;] .. – Sorceror

答えて

4

あなたはGridLayoutの列数を指定する必要があります。私はそれがなぜ問題であるべきか(そしてあなたが働いていると思われるもの)なぜ理解できません。必要なウィジェットの数に応じて、列の数を計算することができます。

This SWT Layout articleはかなり良いです。最初のオブジェクトのサイズを制御する場合は、GridDatawidthHintを指定します。

+1

列の数を指定するのは「問題」ではありませんそれは重複しています。理想的には、指定された要素の水平展開を可能にする複雑でない「レイアウト」クラスが存在する。 – kostmo

+1

実際には、グリッド上の位置をレイアウトに伝える手段が必要であり、その手段である 'GridLayout'のために冗長ではありません。多くのレイアウトマネージャが存在し、いくつかのものははるかに単純ですが、それほど能力がありません。私にとっては、 'GridLayout'のようなものをよく学び、多種多様なレイアウトマネージャを学ぶのではなく、非常に柔軟でパワフルなので、すべてのものに使うことが良いことが分かりました。 –

+2

Androidには 'LinearLayout'があり、GTK +には' HBox'があります。理想的には、SWTの(水平) 'RowLayout'クラスは指定された要素の拡張を可能にしますが、' GridLayout'だけが指定された拡張をサポートしているようです。 GridLayoutを使用し、グリッド機能を望んでいなくても明示的に列の数を指定することを余儀なくされています。私は_grid_の位置を伝える必要はありません - 私はちょうど単一の行が欲しいです。他のツールキットの線形レイアウトクラスでは、レイアウトに追加された子の数によって列の数が推測されます。 – kostmo