Od czasu do czasu pojawia się potrzeba utworzenia własnej, nietypowej klasy Layout. Najczęściej dotyczy to przypadków bardzo złożonych układów używanych w wielu miejscach aplikacji. Należy pamiętać, że z wyjątkiem sytuacji definiowania bardzo ogólnych układów, które będą używane przez kilka widgetów złożonych, często prościej i łatwiej jest obliczać wielkości i położenia widgetów potomnych w ramach funkcji nasłuchiwania zdarzeń zmiany wielkości.
Klasy układów są odpowiedzialne za implementację dwóch metod:
W trzeciej metodzie flushCache(...) można opcjonalnie zaimplementować funkcję usuwanie wszystkich danych powiązanych z określonym polem sterującym z pamięci podręcznej. Często wykonanie metody computeSize() dla widgetu może być kosztowną operacją, dlatego, aby poprawić wydajność, układy mogą zapisywać wyniki w pamięci podręcznej.
Szersze omówienie zagadnienia niestandardowych układów zawiera artykuł Understanding layouts in SWT.