Geralmente, a melhor maneira de manipular o posicionamento simples do widget está em um listener de evento de redimensionamento. No entanto, há padrões comuns utilizados pelos aplicativos ao posicionar widgets. Esses padrões podem ser estruturados como algoritmos de layout configuráveis que podem ser reutilizados por muitos aplicativos diferentes.
O SWT define os layouts que fornecem o posicionamento e o dimensionamento gerais dos widgets filho em um composto.Os layouts são classes filha da classe abstrata Layout.Os layouts padrão do SWT podem ser localizados no pacote org.eclipse.swt.layout.
Há algumas definições gerais utilizadas no redimensionamento e posicionamento de widgets:
Esses conceitos são relevantes para os aplicativos, independentemente do layout utilizado. Você pode pensar em um layout como uma maneira conveniente de compactar a funcionalidade de redimensionamento para reutilização.
Alguns conceitos adicionais são introduzidos pelos layouts:
Consulte Compreendendo layouts no SWT para obter outras abordagens e figuras demonstrando esses conceitos.
O fragmento de código a seguir mostra o caso simples de um aplicativo utilizando um retorno de chamada de redimensionamento para dimensionar um rótulo de acordo com o tamanho de seu shell pai:
Display display = new Display (); Shell shell = new Shell (display); Label label = new Label (shell, SWT.CENTER); shell.addControlListener (new ControlAdapter () { public void controlResized (ControlEvent e) { label.setBounds (shell.getClientArea ()); } });
O próximo framento utiliza um layout para conseguir o mesmo efeito:
Display display = new Display (); Shell shell = new Shell (display); Label label = new Label (shell, SWT.CENTER); shell.setLayout (new FillLayout ());
Mesmo neste exemplo simples, a utilização de um layout reduz o código do aplicativo. Em layouts mais complexos, a simplificação é bem maior.
A tabela a seguir resume os layouts padrão fornecidos pelo SWT.
Layout |
Objetivo |
---|---|
FillLayout | Forma o layout de controles em uma única linha ou coluna, forçando-os a terem o mesmo tamanho. |
FormLayout | Posiciona os filhos utilizando FormAttachments para configurar opcionalmente as bordas esquerda, superior, direita e inferior de cada filho. |
GridLayout | Posiciona os filhos pela linhas e colunas. |
RowLayout | Posiciona os filhos nas linhas horizontais ou colunas verticais. |