Układy

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).