Укажите порядок / расположение SWT-виджетов в составном объекте? - PullRequest
0 голосов
/ 28 сентября 2010

Я хотел бы создать все свои виджеты, прежде чем вставлять их в мой родительский компонент 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);

Можно ли каким-то образом отделить создание виджетов от вставки / размещения в родительском контейнере?

1 Ответ

0 голосов
/ 29 сентября 2010

Нет, нет. Здесь есть небольшое объяснение здесь .

В зависимости от того, что вы хотите, вам может помочь фабрика; в прошлом я использовал что-то вроде этого:

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

}

... что помогло мне абстрагироваться от создания виджетов от большей части моего кода. Когда я пишу модульный тест, я издеваюсь над заводским интерфейсом.

...