2010-09-28 6 views
0

Je voudrais créer tous mes widgets avant de les insérer dans mon parent composite swt. Mais si je comprends bien le parent est toujours spécifiée dans le constructeur lorsqu'un enfant est créé:Spécifiez l'ordre/l'emplacement des widgets swt dans un objet 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); 

Est-il possible de séparer en quelque sorte la création de widgets de l'insertion/placement dans le conteneur parent?

Répondre

0

Non, il n'y en a pas. Il y a un peu d'explication here. En fonction de ce que vous voulez, une usine peut vous aider; dans le passé, je l'ai utilisé quelque chose comme ceci:

public interface ViewerFactory { 

    Text getText(Composite parent); 

    ContentViewer getListViewer(Composite parent); 

    Label getLabel(Composite parent); 

} 

avec la mise en œuvre

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

} 

... qui m'a aidé à abstraire la construction-widget de la plupart de mon code. Quand j'écris un test unitaire, je me moque de l'interface de l'usine.

Questions connexes