Sebbene SWT includa diverse funzioni complesse, è sufficiente una conoscenza di base degli elementi principali del sistema, quali i widget, i layout e gli eventi, per implementare applicazioni utili e potenti.
Se si forniscono elementi di interfaccia utente mediante estensioni del workbench della piattaforma, i meccanismi di avvio di SWT vengono gestiti dal workbench.
Per scrivere un'applicazione SWT partendo da zero e fuori dal workbench, è necessario comprendere meglio la struttura applicativa di SWT.
Una tipica applicazione SWT autonoma possiede la seguente struttura:
Il seguente frammento di codice è stato adattato dall'applicazione org.eclipse.swt.examples.helloworld.HelloWorld2. Poiché l'applicazione visualizza soltanto la stringa "Hello World," non è necessario registrare tutti gli eventi widget.
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 (); }
La visualizzazione rappresenta la connessione tra SWT e il sistema GUI della piattaforma sottostante. Le visualizzazioni sono utilizzate principalmente per gestire il ciclo di eventi della piattaforma e controllare la comunicazione tra il thread dell'interfaccia utente e altri thread. Per una trattazione completa del thread dell'interfaccia utente, consultare la sezione Problemi relativi ai thread per i client.
Per la maggior parte delle applicazioni è possibile seguire il modello utilizzato in precedenza. Prima di creare qualsiasi finestra, è necessario creare una visualizzazione e organizzarla quando la shell è chiusa. Non è necessario dedicare molto tempo alla visualizzazione, a meno che non si stia progettando un'applicazione a più thread.
Una shell è una "finestra" gestita dal gestore delle finestre della piattaforma del sistema operativo. Le shell di livello superiore sono create come elementi secondari della visualizzazione. Sono queste le finestre che gli utenti spostano, ridimensionano, riducono a icona e ingrandiscono quando utilizzano l'applicazione. Le shell secondarie sono quelle create come elemento secondario di un'altra shell. Queste finestre vengono in genere utilizzate come finestre di dialogo o altre finestre transitorie che possono esistere solo all'interno di un'altra finestra.
Tutti i widget che non sono di livello superiore devono disporre di un elemento principale. Le shell di livello superiore non dispongono di un elemento principale ma vengono create in associazione con una particolare visualizzazione. Si può accedere a questa visualizzazione utilizzando getDisplay(). Tutti gli altri widget discendono (direttamente o indirettamente) da shell di livello superiore.
I widget composti sono widget che possiedono elementi secondari.
La finestra di un'applicazione può essere considerata una struttura widget o una gerarchia, che ha come radice la shell. A seconda della complessità dell'applicazione, la shell può avere uno o più elementi secondari o layer nidificati di widget composti con elementi secondari.
Alcune proprietà dei widget devono essere impostate al momento della creazione di un widget e non possono essere modificate in seguito. Ad esempio, un elenco può essere a selezione singola o multipla ed essere dotato o meno di barre di scorrimento.
Queste proprietà, denominate stili, sono impostate nel costruttore. Tutti i costruttori di widget utilizzano un argomento int che specifica l'operatore OR bit per bit di tutti gli stili desiderati. A volte uno stile particolare viene considerato un suggerimento, nel senso che può non essere disponibile su tutte le piattaforme, ma sarà correttamente ignorato sulle piattaforme su cui non è supportato.
Le costanti di stile sono posizionate nella classe SWT in qualità di campi statici pubblici. Un elenco delle costanti applicabili a ciascuna classe di widget è contenuto nel Riferimento API per SWT.
Le piattaforme su cui sui basa SWT richiedono un'esplicita assegnazione e rilascio delle risorse del sistema operativo. La filosofia di progettazione di SWT, in base alla quale la struttura di applicazione della piattaforma deve essere riflessa nel toolkit di widget, rende necessario rilasciare esplicitamente tutte le risorse del sistema operativo che sono state allocate. In SWT, il metodo Widget.dispose() viene utilizzato per liberare le risorse associate a un particolare oggetto del toolkit.
La regola generale è che qualsiasi oggetto creato deve essere eliminato. Di seguito, sono riportate alcune regole base specifiche che spiegano ulteriormente questa filosofia.
Esiste una eccezione a queste regole. Gli oggetti dati semplici, ad esempio un Rettangolo ed un Punto, non utilizzano risorse del sistema operativo. Non includono un metodo dispose() e non è necessario rilasciarli. In caso di dubbi, controllare la classe in Javadoc.
Per ulteriori informazioni su questo argomento, vedere Gestione delle risorse operative.