2012-11-25 98 views
1

我有一个页面,其中包含一些Group s。在小组中,我放置了一些带有不同文本的标签。 我希望所有的组都具有相同的大小。我该怎么做? (我尝试了setSize函数,但它不适用于我)。为SWT组设置固定尺寸

回答

5

下面的代码做你想要的。特技由两个部分组成:

  • 相同的宽度:父(在这个例子中Shell)使用GridLayout其中每列具有相同的宽度
  • 相同的高度:我们使用GridData告诉每个Group占据父级的整个高度(Shell)。

public class StackExample 
{ 
    public static void main(String[] args) 
    { 
     Display display = Display.getDefault(); 
     final Shell shell = new Shell(display); 
     shell.setLayout(new GridLayout(3, true)); 
     shell.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

     for(int i = 0; i < 3; i++) 
     { 
      createGroup(shell, i); 
     } 

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

    private static void createGroup(Shell parent, int index) 
    { 
     Group group = new Group(parent, SWT.NONE); 
     group.setText("Group " + index); 
     group.setLayout(new GridLayout(1, false)); 
     group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

     for(int i = 0; i < index + 1; i++) 
     { 
      String text = ""; 
      for(int j = 0; j < index + 1; j++) 
      { 
       text += "text"; 
      } 

      Label label = new Label(group, SWT.NONE); 
      label.setText(text); 
      label.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false)); 
     } 
    } 
} 

这里有两张截图:

最小尺寸:

enter image description here

当增加窗口大小:

enter image description here