Ocasionalmente, talvez seja necessário gravar sua própria classe Layout personalizada. 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 ouvinte 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 em 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. Certifique-se de testar os vários casos de layout, que são redimensionamento menor, redimensionamento maior, agrupamento e recorte. Quando o algoritmo estiver funcionando, o código poderá ser reformulado em uma subclasse de Layout.
Os layouts são os responsáveis pela implementação de dois métodos:
Mais discussões sobre layouts personalizados podem ser localizadas em Compreendendo layouts no SWT.