Eclipse のレイアウトマネージャーの挙動がさっぱりさっぱりかしら(ムキムキしながら
help を兼ねて…(ぉ orz
Eclipseな觶を知らない人への前説
- widget
- ボタン・staic text 等、各種コントロールの総称。
- composite
- 何にもないウィンドウ。static text (VC) とか、form (C#) とかに該当? この子として、widgetを配置していく。
- table
- Windows でいう ListViewerを一覧表示にしたヤツ / 画像
さて。
親ウィンドウがあり、height = 100px とします。ここに1枚compositeを全面で貼り付けます。この composite の高さは height = 100px*1 です。 そして更に composite の子として table を配置します。
さて、table は内容を表示する為に存在しますので、widget を作成したら適当な項目を詰め込みます。
この詰め込む項目が大量にあった場合、100px に内容が入り切らない状態になります。ここで、入り切らない内容を表示する為に「スクロールバー」が出てきてきてくれます………が、このスクロールバーが問題で、
「tableの中身を」スクロールするスクロールバー *ではなく*
table の内容を追加した結果 table widget 自体の高さが伸びた為に 100px に収まらなくなった結果、composite がスクロールバーを出しています。 なんじゃこりゃー!
つまり、スクロールバーをタテに動かすと、table のヘッダーも一緒に上下してしまうというこの上なくどうしようもない状態に。
で、困ったことに「tableの高さを、親の大きさに合わせる」ってのがうまくいかずにうっへりです。 orz
- Composite に GirdLayout / Table に GridData(FILL_VERTICAL)
- やっぱり勝手に伸びます。
- Composite に FormLayout / Table に FormData で親にぴっちりなるように指定
- やっぱり勝手に伸びます:
- Composite に GirdLayout / Table に GridData(FILL_VERTICAL) で、高さ固定 - heightHint使用
- 親ウィンドウ自体を大きくしたら下にスペースが出来てうっへり
とりあえず「Table」の大きさを指定する方法がよく分かってないのが原因かもしれません…
setLayoutData で上手い具合にいかないのかなぁー。 なんで、親の高さより自分の高さを優先するかなんもー orz
*1:ぐらい