2014-09-28 88 views
0

我想創建一個複合包含2個組。 2組與組合具有相同的寬度,可以調整大小。SWT在組中創建滾動複合

組1包含一個可滾動的Composite。此可滾動複合材料具有固定高度= 400且包含20個文本字段==>顯示V_SCROLL

組2包含文本字段並且高度將爲動態,最小大小爲100,按高度重新調整大小複合 - 400(Scrollable的高度複合)

我嘗試建立這種佈局,但始終組別充分填充複合材料,我無法看到該組中2

感謝

回答

5

您可以使用GridData#heightHintGridData#minimumHeight設置你的高度。但請記住,在所有屏幕分辨率下強制執行特定大小可能效果不佳,因爲所需大小可能會超過可用屏幕大小。

然而,這裏是一個簡單的例子,應該可以幫助您:

public static void main(String[] args) 
{ 
    Display display = new Display(); 
    Shell shell = new Shell(); 
    shell.setText("StackOverflow"); 
    shell.setLayout(new GridLayout(1, false)); 

    Group first = new Group(shell, SWT.NONE); 
    first.setText("Group 1"); 
    first.setLayout(new GridLayout(1, false)); 
    GridData firstData = new GridData(SWT.FILL, SWT.FILL, true, false); 
    firstData.heightHint = 400; 
    first.setLayoutData(firstData); 

    ScrolledComposite firstScroll = new ScrolledComposite(first, SWT.V_SCROLL); 
    firstScroll.setLayout(new GridLayout(1, false)); 
    firstScroll.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    Composite firstContent = new Composite(firstScroll, SWT.NONE); 
    firstContent.setLayout(new GridLayout(1, false)); 
    firstContent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    for (int i = 0; i < 20; i++) 
    { 
     Text text = new Text(firstContent, SWT.BORDER); 
     text.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false)); 
    } 

    firstScroll.setContent(firstContent); 
    firstScroll.setExpandHorizontal(true); 
    firstScroll.setExpandVertical(true); 
    firstScroll.setMinSize(firstContent.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 

    Group second = new Group(shell, SWT.NONE); 
    second.setText("Group 2"); 
    second.setLayout(new GridLayout(1, false)); 
    GridData secondData = new GridData(SWT.FILL, SWT.FILL, true, true); 
    secondData.minimumHeight = 100; 
    second.setLayoutData(secondData); 

    Text text = new Text(second, SWT.BORDER | SWT.MULTI); 
    text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    shell.pack(); 
    shell.setSize(400, shell.getSize().y); 
    shell.open(); 

    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
     { 
      display.sleep(); 
     } 
    } 
    display.dispose(); 
} 

是這樣的:

enter image description here

+0

感謝巴茲了很多,這就是我需要 – 2014-09-29 02:43:37

+0

+1確切的事情。 @Baz與代碼和屏幕截圖的很好的解釋 – 2014-09-29 07:08:23