Aangepaste layouts
Af en toe moet u zelf een aangepaste Layout-klasse schrijven. Dit is handig als u een complexe layout hebt die op verschillende plaatsen in de toepassing wordt gebruikt. Tenzij u een zeer algemene layout schrijft voor verschillende Composite-widgets, is het het eenvoudigst om de grootte te berekenen en de onderliggende items met een aparte listener te positioneren.
Layouts zorgen voor de implementatie van twee methoden:
- computeSize(...) berekent de hoogte en breedte van een rechthoek waarin alle onderliggende items van een samengesteld element worden opgenomen als de layoutalgoritme de grootte en locatie heeft berekend. Met de hintparameters kunnen de breedte en/of hoogte worden bepaald. Een layout zou zich bijvoorbeeld in één dimensie kunnen uitbreiden als deze in een ander opgenomen is.
- layout(...) positioneert de onderliggende items van een samengesteld element en bepaalt de grootte. Een layout kan layoutinformatie in een cache opslaan, bijvoorbeeld over het voorkeursgebied voor alle onderliggende items. De parameter flushCache instrueert de layout om de cachegegevens te verwijderen. Dit is noodzakelijk als naast de grootte ook andere andere factoren van het samengestelde element zijn veranderd, bijvoorbeeld het maken of verwijderen van onderliggende items of het wijzigen van het lettertype in de widget.
De derde methode flushCache(...) kan optioneel worden geïmplementeerd om in de cache opgeslagen gegevens te verwijderen die aan een bepaald besturingselement zijn gekoppeld. De methode computeSize() van een widget kan vaak groot worden, dus kunnen layouts de resultaten opslaan om de prestatie te verbeteren.
U vindt een verdere bespreking van aangepaste layouts
Layouts in SWT.