Layout 垂直膨胀复合材料

Layout 垂直膨胀复合材料,layout,swt,Layout,Swt,我正在构建一个SWT UI,它有一个窗口(外壳),其中有三个复合材料,一个叠在另一个下面。我希望: 全部扩展到最大可能宽度(窗口宽度) 第一个和第三个复合材料的高度各为100px 第三个组合扩展到height\u of_parent-200px-any_margins\u或\u paddings 目标2很简单,我使用定义的ColumnLayout实现了目标1 如何实现目标3? 非常感谢:) PS:我对SWT非常陌生。我会使用GridLayout并执行如下操作: GridLayout layout

我正在构建一个SWT UI,它有一个窗口(外壳),其中有三个复合材料,一个叠在另一个下面。我希望:

  • 全部扩展到最大可能宽度(窗口宽度)
  • 第一个和第三个复合材料的高度各为100px
  • 第三个组合扩展到
    height\u of_parent-200px-any_margins\u或\u paddings
  • 目标2很简单,我使用定义的ColumnLayout实现了目标1

    如何实现目标3?
    非常感谢:)


    PS:我对SWT非常陌生。

    我会使用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);
        }
    });