可垂直扩展的复合材料

时间:2010-09-24 16:20:24

标签: layout swt

我正在构建一个SWT用户界面,它有一个窗口(Shell),其中三个复合材料堆叠在一起。我想要那个:

  1. 全部扩展到最大可能宽度(窗口宽度)
  2. 第一个和第三个复合材料的高度为100px
  3. 第三个复合材料扩展到height_of_parent - 200px - any_margins_or_paddings的高度。
  4. 目标2是微不足道的,我使用ColumnLayout定义的here做了目标1。

    如何处理目标3?
    非常感谢:))

    PS:我对SWT很新。

1 个答案:

答案 0 :(得分:0)

我会使用GridLayout并执行以下操作:

GridLayout layout = new GridLayout();
parent.setLayout(layout);

GridData data1 = new GridData(SWT.LEFT, SWT.FILL, false, true);
data1.heightHint = 100;
widget1.setLayoutData(data1);

GridData data2 = new GridData(SWT.LEFT, SWT.FILL, false, true);
data2.heightHint = 100;
widget2.setLayoutData(data2);

GridData data3 = new GridData(SWT.LEFT, SWT.TOP, false, false);
data3.heightHint = Math.max(1, parent.getSize().y - 200 - layout.marginHeight * 2);
widget3.setLayoutData(data3);

parent.addControlListener(new ControlAdapter() {
    public void controlResized(ControlEvent e) {
        GridData data = (GridData)widget3.getLayoutData();
        data.heightHint = parent.getSize().y - 200 - layout.marginHeight * 2;
        widget3.setLayoutData(data);
        parent.layout(true);
    }
});