2010-09-28 75 views
0

我想在将它们插入到swt Composite父级之前创建所有的小部件。但正如我了解父母是在构造函数总是被指定当孩子创建:指定SWT窗口小部件在复合对象中的顺序/位置?

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

是有可能以某种方式控件的创建从插入/放置分离成父容器?

回答

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

} 

...这帮助我建立抽象窗口小部件远离我的大部分代码。当我编写单元测试时,我嘲笑工厂界面。