De SWT bevat krachtige features, maar basiskennis van de systeemkern - widgets, layouts en events - is voldoende om nuttige en krachtige toepassingen te implementeren.
Als u gebruikersinterface-elementen maakt met workbenchextensies, wordt het opstarten van de SWT door de workbench afgehandeld.
Als u een SWT-toepassing vanaf het begin af aan schrijft buiten de workbench, moet u meer weten over de toepassingsstructuur in de SWT.
Een kenmerkende zelfstandige SWT-toepassing heeft de volgende structuur:
Het volgende codefragment is een aanpassing van de toepassing org.eclipse.swt.examples.helloworld.HelloWorld2. Omdat de toepassing alleen de tekenreeks "Hello World," afbeeldt, hoeft deze geen widgetevents te registreren.
public static void main (String [] args) { Display display = new Display (); Shell shell = new Shell (display); Label label = new Label (shell, SWT.CENTER); label.setText ("Hello_world"); label.setBounds (shell.getClientArea ()); shell.open (); while (!shell.isDisposed ()) { if (!display.readAndDispatch ()) display.sleep (); } display.dispose (); }
Het element Display vormt een verbinding tussen de SWT en de onderliggende gebruikersinterface. Displays worden voornamelijk gebruikt om de eventlus van het platform te beheren en de communicatie tussen de interfacethread en andere threads te regelen. (Zie Threadproblemen voor clients voor een volledige bespreking van interfacethreadproblemen.)
Voor de meeste toepassingen kunt u het bovenstaande model volgen. U moet een display maken voordat u vensters maakt en u moet de display verwijderen als de shell wordt gesloten. U hoeft zich verder niet veel met de display bezig te houden, tenzij u een toepassing met meerdere threads maakt.
Een shell is een "venster" dat wordt beheerd door het vensterbeheer van het platform. Shells op het hoogste niveau zijn shells die worden gemaakt als onderliggend item van de display. Dit zijn de vensters die de gebruiker verplaatst, vergroot of verkleint, minimaliseert of maximaliseert. Secundaire shells zijn shells die worden gemaakt als onderliggend item van een andere shell. Deze vensters worden normaal gebruikt als dialoogvenster of ander tijdelijk venster dat alleen in de context van een ander venster bestaat.
Alle widgets die geen topniveaushells zijn, moeten een bovenliggend item hebben. Topniveaushells hebben geen bovenliggende items, maar worden gemaakt in combinatie met een bepaalde display. U krijgt toegang tot dit display met getDisplay(). Alle andere widgets worden gemaakt als onderliggend item (direct of indirect) van shells op het hoogste niveau.
Composite-widgets zijn widgets die onderliggende items kunnen hebben.
U kunt zich een toepassingsvenster voorstellen als boomstructuur van widgets (een hiërarchie), waarbij het hoogste niveau de shell is. Afhankelijk van de complexiteit van de toepassing, kan een shell één onderliggend item, meerdere onderliggende items of geneste lagen van samengestelde elementen met onderliggende items hebben.
Sommige widgeteigenschappen moeten tijdens het maken van de widget worden ingesteld en kunnen daarna niet worden gewijzigd. Een lijst wordt bijvoorbeeld voorzien van enkelvoudige of meervoudige selectie en heeft wel of geen schuifbalken.
Deze eigenschappen heten stijlen en worden ingesteld in de constructor. Alle widgetconstructors hebben het argument int. Hiermee wordt de bitwise OR van alle gewenste stijlen aangegeven. In sommige gevallen wordt een bepaalde stijl als hint beschouwd. Dit houdt in dat de stijl niet op alle platforms beschikbaar is, maar zonder problemen wordt genegeerd door platforms die deze niet ondersteunen.
De stijlconstanten bevinden zich in de klasse SWT als public static-velden. U vindt een lijst met toepasbare constanten voor alle widgetklassen in de API-documentatie voor SWT.
De platforms onder de SWT vereisen expliciete toewijzing en het vrijgeven van de resources van het besturingssysteem. Door zich te houden aan de SWT-ontwerpfilosofie van de platformtoepassingsstructuur, vereist de SWT dat u toegewezen resources van het besturingssysteem expliciet vrijgeeft. De methode Widget.dispose() wordt in de SWT gebruikt om de resources van een bepaald toolkitobject vrij te geven.
De richtlijn is dat als u het object maakt, u het ook weer moet verwijderen. Hier volgen enige basisregels die de filosofie verder illustreren:
Er is een uitzondering op deze regels. Eenvoudige gegevensobjecten als rechthoeken en punten gebruiken geen systeemresources. Ze beschikken niet over de methode dispose() en u hoeft ze niet vrij te geven. Als u het niet precies weet, raadpleegt u de javadoc voor een bepaalde klasse.
Zie Systeemresources beheren voor een uitgebreide bespreking van dit onderwerp.