Group vs Composite SWT?

时间:2014-07-02 22:03:49

标签: java swt

Group Control和Composite除了它们的外观有什么区别? 我可以在集团内放置一个容器吗?如果是,我将使用什么布局?我尝试将一个容器放在一个组中,但Container内的控件没有显示出来。

Group grp= new Group(container, SWT.NONE);
grp.setText("XYZ");
grp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Conatiner cnt = new Container(grp, SWT.NONE);
cnt.setLayout(new GridLayout(4,true));
cnt.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
Text text = new Text(cnt,SWT.LEFT);

1 个答案:

答案 0 :(得分:4)

Group延伸Composite。这意味着它们都可以有子元素。两者都可以放在另一个里面。您的问题似乎是由于Group没有Layout这一事实造成的。仅将Layout设置为Composite

是不够的

这是一个最小的例子:

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

    Group group = new Group(shell, SWT.NONE);
    group.setText("Group");
    group.setLayout(new GridLayout(1, false));

    Composite composite = new Composite(group, SWT.NONE);
    composite.setLayout(new GridLayout(2, true));

    new Label(composite, SWT.NONE).setText("left");
    new Label(composite, SWT.NONE).setText("right");

    shell.pack();
    shell.open();

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