Подтвердить что ты не робот

Изменение порядка детей SWT Composite

В моем случае у меня есть двое детей SashForm, но вопрос относится ко всем Composite s.

class MainWindow {
    Sashform sashform;
    Tree child1 = null;
    Table child2 = null;

    MainWindow(Shell shell) {
        sashform = new SashForm(shell, SWT.NONE);
    }

    // Not called from constructor because it needs data not available at that time
    void CreateFirstChild() {  
        ...
        Tree child1 = new Tree(sashform, SWT.NONE);
    }

    void CreateSecondChild() {
        ...
        Table child2 = new Table(sashform, SWT.NONE);
    }    
}

Я не знаю заранее, в каком порядке эти методы будут называться. Как я могу убедиться, что child1 находится слева, и child2 справа? Альтернативно, есть ли способ изменить их порядок как детей SashForm после их создания?

В настоящее время моя лучшая идея заключается в том, чтобы помещать такие заполнители следующим образом:

class MainWindow {
    Sashform sashform;
    private Composite placeholder1;
    private Composite placeholder2;
    Tree child1 = null;
    Table child2 = null;

    MainWindow(Shell shell) {
        sashform = new SashForm(shell, SWT.NONE);
        placeholder1 = new Composite(sashform, SWT.NONE);
        placeholder2 = new Composite(sashform, SWT.NONE);
    }

    void CreateFirstChild() {  
        ...
        Tree child1 = new Tree(placeholder1, SWT.NONE);
    }

    void CreateSecondChild() {
        ...
        Table child2 = new Table(placeholder2, SWT.NONE);
    }    
}
4b9b3361

Ответ 1

Когда вы создаете child1, проверьте, не был ли создан экземпляр child2. Если это так, значит, child1 находится справа, потому что он был создан позже, поэтому вы должны сделать это:

child1.moveAbove( child2 );

Надеюсь, что это поможет.