2010-09-24 117 views
0

我正在構建一個SWT用戶界面,並且它有一個窗口(外殼),其中三個複合材料層疊在一起。我想的是:垂直可擴展複合材料

  1. 所有擴展到最大可能寬度(窗口寬度)
  2. 第一和第三複合材料具有100像素高度的每個
  3. 第三複合擴展到的height_of_parent - 200px - any_margins_or_paddings的高度。

目標2是微不足道的,我做了目標1使用ColumnLayout定義here

如何做到尊重目標3?
非常感謝:)

PS:我對SWT很新。

回答

0

我會用一個網格佈局,做這樣的事情:

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); 
    } 
});