Да, позвоните layout (true)
на родителя.
Например, у меня есть представление, в верхней части которого находится панель поиска, видимость которой можно переключать. У меня есть метод для создания поискового композита и один для его удаления:
private void createNameSearchBar () {
mySearchControl = new CardSearchControl (myViewComposite, SWT.NONE);
mySearchControl.setSearchListener (this);
}
private void disposeNameSearchBar () {
mySearchControl.dispose ();
mySearchControl = null;
}
private CardSearchControl mySearchControl = null;
private Composite myViewComposite;
private boolean mySearchBarState;
Чтобы скрыть или показать элемент управления панели поиска, я вызываю этот метод (myViewComposite - элемент управления верхнего уровня, которому принадлежит панель поиска и все остальные элементы управления):
public void setSearchBarState (boolean show) {
mySearchBarState = show;
if (myViewComposite == null || myViewComposite.isDisposed ())
return; // no work to do
if (mySearchBarState && mySearchControl == null) {
createNameSearchBar ();
mySearchControl.moveAbove (null);
myViewComposite.layout (true);
} else if (!mySearchBarState && mySearchControl != null) {
disposeNameSearchBar ();
myViewComposite.layout (true);
}
}