Można rozszerzyć bibliotekę SWT, implementując własny, niestandardowy widget. Same biblioteki SWT udostępniają pakiet org.eclipse.swt.custom, który zawiera niestandardowe pola sterujące. Pól tych nie ma w podstawowym zbiorze pól sterujących SWT, ale są one potrzebne do implementacji środowiska roboczego platformy.
Pole sterujące |
Przeznaczenie |
---|---|
CBanner | Pole sterujące CBanner jest używane w środowisku roboczym do definiowania układu obszaru paska narzędzi i paska narzędzi przełączania perspektywy. |
CCombo | Pole sterujące podobne do pola Combo, ale umożliwiające zmianę rozmiaru w pionie tak, aby dopasować się do rozmiaru komórek w tabeli. |
CLabel | Pole sterujące podobne do pola Label, ale obsługujące obcinanie tekstu i zastępowanie teksu wielokropkiem. Obsługuje także efekt gradientu dla koloru tła, taki jak używany w aktywnym widoku środowiska roboczego. Nie obsługuje zawijania tekstu. |
CTabFolder | Pole sterujące podobne do elementu TabFolder, ale z możliwością dodatkowej konfiguracji wyglądu kart (u góry lub u dołu) i ramek. |
CTabItem | Obiekt interfejsu użytkownika z możliwością zaznaczania odpowiadający karcie strony w polu CTabFolder. |
SashForm | Złożone pole sterujące, które umożliwia układanie jego elementów podrzędnych w wierszu lub w kolumnie i oddziela je przy użyciu pola sterującego Sash, dzięki czemu użytkownik może zmieniać ich rozmiar. |
ScrolledComposite | Złożone pole sterujące, które umożliwia przewijanie jego treści i opcjonalnie rozciąga ją w celu wypełnienia dostępnego miejsca. |
StyledText | Pole sterujące z możliwością edycji, które służy do wpisywania tekstu. Poszczególne fragmenty tekstu wewnątrz pola sterującego mogą mieć różne kolory i różne style czcionki. |
ViewForm | Pole sterujące ViewForm jest używane w środowisku roboczym do ustawienia pozycji oraz wielkości etykiety, paska narzędzi lub lokalnego paska menu widoku. |
Gdy wiadomo już na pewno, że potrzebny jest niestandardowy widget oraz znane są platformy, które mają być obsługiwane, można rozważyć kilka technik implementacji tego widgetu. Techniki te można stosować łącznie i dopasowywać odpowiednio do dostępnych możliwości bazowej platformy systemu operacyjnego.
Gdy dana aplikacja wymaga rodzimego widgetu, który nie jest udostępniany przez biblioteki SWT, trzeba go zaimplementować w trybie rodzimym. Może to być widget platformy, widget innej firmy, lub dowolny inny widget we współużytkowanej bibliotece platformy. Pełny przykład rodzimej implementacji widgetu niestandardowego można znaleźć w sekcji Creating Your Own Widgets using SWT (Tworzenie własnych widgetów przy użyciu biblioteki SWT).
Widgety mogą być łączone, tworząc bardziej zaawansowanych widgety. Na przykład pole sterujące Combo można zaimplementować przy użyciu widgetu wprowadzania tekstu w połączeniu z przyciskiem i listą rozwijaną. Aby zaimplementować widget złożony, należy utworzyć podklasę klasy Composite i zarządzać elementami potomnymi wewnętrznie.
Prosty przykład można znaleźć w opisie widgetu CCombo.
W niektórych przypadkach nie ma żadnego kodu rodzimego ani istniejących widgetów, które mogłyby pomóc w implementacji nowego widgetu. Oznacza to, że należy narysować widget samodzielnie w procedurze obsługi zdarzenia Paint. Chociaż technika ta może być mocno skomplikowana, jej zaletą jest tworzenie całkowicie przenośnej implementacji.
Rysowane niestandardowo pola sterujące są implementowane przez utworzenie podklas klasy Canvas lub klasy Composite. Jeśli dany widget nie ma mieć potomnych pól sterujących, należy utworzyć podklasy klasy Canvas.
Wewnętrzna implementacja rysowanego niestandardowo widgetu obejmuje zwykle trzy główne czynności:
Metoda ta jest stosowana dla wielu widgetów z pakietu org.eclipse.swt.custom. Prosty przykład można znaleźć w opisie widgetu CLabel.
Więcej informacji na temat widgetów niestandardowych można znaleźć w sekcji Tworzenie własnych widgetów przy użyciu biblioteki SWT.