Vaak is het gebruik van een eventlistener voor formaatwijzigingen de beste manier om eenvoudige widgetpositionering af te handelen. Er zijn echter patronen die toepassingen vaak gebruiken bij het plaatsen van widgets. Deze patronen kunnen worden gestructureerd als configureerbare layoutalgoritmen die door vele andere toepassingen opnieuw gebruikt kunnen worden.
In de SWT worden layouts gedefinieerd die algemene positionering en formaatbepaling bieden voor onderliggende widgets in een samengesteld element. Layouts zijn subklassen van de abstracte klasse Layout. U kunt de SWT-standaardlayouts vinden in het pakket org.eclipse.swt.layout.
Dit is een aantal algemene definities voor de formaatbepaling en positionering van widgets:
Deze concepten zijn belangrijk voor toepassingen, ook als er geen layout wordt gebruikt. U kunt zich een layout voorstellen als een handige manier formaatwijzigingen voor hergebruik te bewaren.
Layouts maken gebruik van enige aanvullende concepten:
Zie Layouts in SWT voor een uitgebreide bespreking en illustraties over deze concepten.
In het volgende codefragment ziet u een eenvoudig voorbeeld van een toepassing die een callback gebruikt om de grootte van een label aan te passen aan de bovenliggende 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 ()); } });
In het volgende codefragment wordt een layout gebruikt om hetzelfde effect te bereiken:
Display display = new Display (); Shell shell = new Shell (display); Label label = new Label (shell, SWT.CENTER); shell.setLayout (new FillLayout ());
Zelfs in dit eenvoudige voorbeeld wordt de code korter als er een layout wordt gebruikt. Bij complexere layouts is dit effect nog veel groter.
De volgende tabel geeft een overzicht van standaardlayouts in de SWT.
Layout |
Doel |
---|---|
FillLayout | Plaatst besturingselementen in een enkele rij of kolom en geeft ze dezelfde grootte. |
FormLayout | Positioneert de onderliggende items met FormAttachments om het kader links, boven, rechts en onder optimaal te configureren. |
GridLayout | Plaatst de onderliggende items in rijen en kolommen. |
RowLayout | Plaatst de onderliggende items horizontaal in rijen of verticaal in kolommen. |