Ocasionalmente, talvez seja necessário gravar sua própria classe de Layout personalizado. Isso é mais apropriado quando se tem um layout complexo utilizado em muitos lugares diferentes do aplicativo. Talvez seja apropriado quando for possível otimizar o layout utilizando o conhecimento específico do aplicativo. Antes de construir um layout personalizado, considere o seguinte:
A menos que você esteja gravando um layout bastante genérico que será utilizado por vários widgets Compostos, é bem mais simples e mais fácil calcular tamanhos e posicionar filhos em um atendente de redimensionamento. Muitos dos widgets personalizados do SWT foram gravados dessa maneira. Embora um novo widget possa ser implementado como um par Composto/Layout , implementá-lo como um Composto que forma seu layout em um atendente de redimensionamento e computa seu tamanho preferencial no computeSize é mais claro e não envolve a gravação de uma classe extra.
Se você ainda julga necessária uma classe de layout personalizado, é bom primeiro implementar o algoritmo do layout em um atendente de redimensionamento. Isso contribui para simplificar sua própria depuração. Não esqueça de testar os vários casos de layout: redimensionamento menor, maior, agrupamento e recorte. Depois de terminar de trabalhar no algoritmo, o código poderá ser refatorado em uma classe filha do Layout.
Os layouts são os responsáveis pela implementação de dois métodos:
Mais discussões sobre layouts personalizados podem ser encontradas em Compreendendo Layouts no SWT.