Por vezes a melhor forma de tratar o simples posicionamento dos widgets está num ouvinte de redimensionamento de eventos. Todavia, há padrões comuns utilizados por aplicações no posicionamento de widgets. Estes padrões podem ser estruturados como algoritmos de esquema configuráveis que podem ser reutilizados por muitas aplicações diferentes.
O SWT define disposições que facultam posicionamento e dimensionamento genéricos de widgets descendentes num compósito. Os esquemas são subclasses da classe abstracta Layout. Os esquemas padrão de SWT encontram-se no pacote org.eclipse.swt.layout.
Existem algumas definições gerais utilizadas ao redimensionar e posicionar widgets:
Estes conceitos são relevantes para aplicações seja qual for o esquema utilizado. Poderá considerar um esquema uma maneira conveniente de constituir um pacote das funcionalidades do redimensionamento para fins de reutilização.
Os esquemas apresentam-nos conceitos adicionais:
Consulte Compreender esquemas em SWT para mais detalhes e ilustrações que demonstram estes conceitos.
A porção de código seguinte mostra o caso simples de uma aplicação que utiliza uma chamada de retorno de redimensionamento para dimensionar uma etiqueta ao tamanho da sua interface ascendente (shell):
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 ()); } });
A porção de código seguinte utiliza um esquema 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 ());
Até para este simples exemplo, o uso de um esquema reduz o código da aplicação. Para esquemas mais complexos, a simplificação é maior.
A tabela seguinte resume os esquemas padrão facultados pelo SWT.
Esquema |
Finalidade |
---|---|
FillLayout | Esquematiza controlos numa única linha ou coluna, forçando-os a terem o mesmo tamanho. |
FormLayout | Posiciona os descendentes mediante FormAttachments para configurar opcionalmente as beiras esquerda, superior, direita e inferior de cada descendente. |
GridLayout | Posiciona os descendentes por linhas e colunas. |
RowLayout | Coloca os descendentes quer em linhas horizontais quer em colunas verticais. |