SWT composite - problem przerysowania

Mam element złożony, który początkowo ma etykietę. Teraz dzwonię do dispose na nim (etykieta) i tworzę kolejną etykietę w tym samym pojemniku (wiąz elm), ale nie widzę nowego tekstu. Daje mi to pytanie, jak włączyć przerysowywanie w kompozycie, aby nowa etykieta (lub jakikolwiek inny komponent, który mogłem utworzyć) była renderowana w miejsce starej. Oto kod, który mam (podzielony na test jednostkowy do przerysowania kompozytu)

<code>private Label createLabel( Composite parent) {
    Label label = new Label(parent, SWT.NONE);
    label.setAlignment(SWT.CENTER);
    label.setLayoutData( new GridData( SWT.CENTER, SWT.CENTER, true, true) );
    return label;
}

private void changeText() {
    assert testCell != null : "Please initialize test cell";
    testCell.getChildren()[0].dispose();
    Label l = createLabel(testCell);
    l.setText("New TexT");
    testCell.redraw();
}

private void draw() {
    Display display = new Display();
    shell = new Shell(display);
    shell.setLayout(new GridLayout(2,false));

    testCell = new Composite(shell,SWT.BORDER);
    testCell.setLayout(new GridLayout());
    Label l = createLabel(testCell);
    l.setText("Old Text");
    Composite btnCell = new Composite(shell,SWT.NONE);
    btnCell.setLayout(new GridLayout());
    Button b = new Button(btnCell, SWT.PUSH);
    b.setText("Change");
    b.addListener(SWT.MouseDown, new Listener() {
        public void handleEvent(Event e) {
            changeText();
        }
    });
</code>

Jak widać, wywołuję przerysowanie na kompozycie po dodaniu nowego elementu. Sprawdziłem również, że po wywołaniu dispose, testCell.getChildren (). Length zwraca 0, zgodnie z oczekiwaniami, a kiedy tworzę nową etykietę, otrzymuję to samo wyrażenie, które zwraca 1, sprawdzając, czy nowy element rzeczywiście się dostaje dodany do macierzystego kontenera kompozytowego Czy czegoś tu brakuje?

questionAnswers(2)

yourAnswerToTheQuestion