Często najlepszą metodą obsługi prostego pozycjonowania widgetów jest zastosowanie klasy nasłuchiwania zdarzeń zmiany wielkości. Istnieją jednak typowe schematy rozmieszczania widgetów stosowane w aplikacjach. Schematy te można sformalizować do postaci konfigurowalnych algorytmów układu graficznego, nadających się do zastosowania w wielu aplikacjach.
Pakiet SWT definiuje układy określające ogólne zasady pozycjonowania i ustalania wielkości widgetów potomnych w widgetach złożonych. Układy są podklasami klasy abstrakcyjnej Layout. Standardowe układy SWT znajdują się w pakiecie org.eclipse.swt.layout.
Istnieją pewne ogólne definicje używane podczas ustalania wielkości i pozycjonowania widgetów:
Powyższe pojęcia pełnią istotną rolę w tworzeniu aplikacji bez względu na to, czy korzysta ona z układów. Układ można traktować jako wygodną metodę pakowania funkcji odpowiedzialnych za zmiany wielkości widgetów na potrzeby dalszego użytku w przyszłości.
W kontekście układów istotne są jeszcze inne pojęcia:
Szersze omówienie tych zagadnień wraz z ilustracjami można znaleźć w sekcji Understanding layouts in SWT.
Poniżej przedstawiony fragment kodu ilustruje prosty przypadek aplikacji wywołującej funkcję zmiany rozmiaru w celu dostosowania wielkości etykiety do wielkości składnika nadrzędnego:
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 ()); } });
W kolejnym przykładzie kodu ten sam efekt osiągnięto przy użyciu układu:
Display display = new Display (); Shell shell = new Shell (display); Label label = new Label (shell, SWT.CENTER); shell.setLayout (new FillLayout ());
Nawet w tak uproszczonym przykładzie odwołanie się do układu pozwala zmniejszyć objętość kodu aplikacji. W przypadku bardziej złożonych układów skala uproszczenia jest jeszcze większa.
Poniższa tabela zawiera zestawienia standardowych układów udostępnianych przez bibliotekę SWT.
Układ |
Przeznaczenie |
---|---|
FillLayout | Powoduje rozmieszczenie pól sterujących w pojedynczym wierszu lub kolumnie, wymuszając ich jednakową wielkość. |
FormLayout | Określa pozycję widgetów potomnych przy użyciu klasy FormAttachments stosowanej do opcjonalnego konfigurowania położenia lewej, górnej, prawej i dolnej krawędzi każdego widgetu potomnego. |
GridLayout | Umożliwia ustawienie widgetów potomnych w wierszach i kolumnach. |
RowLayout | Umożliwia ułożenie widgetów potomnych w wierszach lub kolumnach (poziomo lub pionowo). |