指定复合对象中swt小部件的顺序/位置?

时间:2010-09-28 13:43:35

标签: swt widget

我想在将它们插入到我的swt Composite父级之前创建所有小部件。但据我所知,在创建子项时始终在构造函数中指定父项:

Composite container = new Composite(parent, SWT.NULL);
GridLayout layout = new GridLayout();
container.setLayout(layout);
layout.numColumns = 3;
layout.verticalSpacing = 9;
...
// Create a child at first row leftmost location
Label labelConfigurator = new Label(container, SWT.NULL);
labelConfigurator.setText(title);

是否有可能以某种方式将窗口小部件的创建与插入/放置分离到父容器中?

1 个答案:

答案 0 :(得分:0)

不,没有。有一些解释here

根据您的需要,工厂可能会帮助您;在过去,我使用过这样的东西:

public interface ViewerFactory {

    Text getText(Composite parent);

    ContentViewer getListViewer(Composite parent);

    Label getLabel(Composite parent);

}

实施

private final class ViewerFactoryImpl implements ViewerFactory {
    @ Override
    public Label getLabel ( Composite parent ) {
        return new Label ( parent , SWT.NONE ) ;
    }

    @ Override
    public ContentViewer getListViewer ( Composite parent ) {
        return new ListViewer ( parent , SWT.V_SCROLL | SWT.BORDER | SWT.MULTI ) ;
    }

    @ Override
    public Text getText ( Composite parent ) {
        return new Text ( parent , SWT.BORDER ) ;
    }

}

...这帮助我从大多数代码中抽象出构建小部件。当我编写单元测试时,我会模拟工厂界面。