2010-09-28 76 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) ; 
    } 

} 

...這幫助我建立抽象窗口小部件遠離我的大部分代碼。當我編寫單元測試時,我嘲笑工廠界面。