Poderá optar por estender o SWT implementando os seus próprios widgets personalizados. O próprio SWT faculta um pacote, org.eclipse.swt.custom, que contém controlos personalizados que não se encontram no conjunto núcleo dos controlos de SWT mas que são necessários para implementar a área de trabalho da plataforma.
Controlo |
Finalidade |
---|---|
CBanner | CBanner é utilizado na área de trabalho para esquematizar a área da barra de ferramentas e da barra de ferramentas de mudança de perspectivas. |
CCombo | Semelhante ao Combo, mas redimensionável verticalmente, o que permite ajustá-lo a células de tabela. |
CLabel | Semelhante à Etiqueta, mas suporta encurtamento de texto mediante reticências. Suporta ainda um efeito gradient para a cor de segundo plano, tal como é visível na vista da área de trabalho activa. Não suporta translineação. |
CTabFolder | Semelhante a TabFolder, mas suporta configuração adicional da aparência visual dos separadores (superior ou inferior) e esquemas. |
CTabItem | Objecto de interface de utilizador seleccionável que corresponde a um separador de uma página numa CTabFolder. |
SashForm | Controlo compósito que esquematiza os seus descendentes numa disposição de linhas ou colunas e utiliza uma Faixa para as separar para que o utilizador as possa redimensionar. |
ScrolledComposite | Controlo compósito que desloca o seu conteúdo e o estica opcionalmente para preencher o espaço disponível. |
StyledText | Controlo editável que permite ao utilizador introduzir texto. Os intervalos de texto dentro do controlo podem ter cores e estilos de tipo de letra distintos. |
ViewForm | ViewForm utiliza-se na área de trabalho para posicionar e dimensionar uma barra local de menus/ferramentas/etiquetas. |
Uma vez determinado que é preciso um widget personalizado e decididas as plataformas que devem ser suportadas, poderá considerar várias técnicas de implementação para o seu widget. Estas técnicas podem ser misturadas e correspondidas consoante o que estiver disponível na plataforma do SO subjacente.
Se a aplicação quiser um widget nativo que não seja facultado pelo SWT, terá de o implementar nativamente. Poderá ser um widget de plataforma, widget de outros fabricantes ou qualquer outro widget numa biblioteca partilhada de plataforma. Encontra-se um exemplo completo da implementação do widget personalizado nativo em Criar Widgets Próprios com SWT.
Os widgets podem ser combinados para formar widgets que sejam mais sofisticados. Por exemplo, pode implementar-se um Combo com um widget de entrada de texto junto com um botão e uma lista pendente. Para implementar um widget combinado, deve criar uma subclasse de Composite e gerir os descendentes internamente.
Encontra-se um simples exemplo em CCombo.
Em alguns casos, não existe código nativo nem widgets que ajudem na implementação do novo widget. Significa isto que é necessário desenhar o widget na rotina de tratamento do evento Pintura. Embora esta técnica se possa tornar complicada, tem a vantagem de produzir uma implementação completamente portátil.
Os controlos desenhados personalizados são implementados construindo subclasses de Tela ou Compósito. Constitua subclasse de Tela se o widget não contiver nenhuns controlos descendentes.
A implementação interna de um widget desenhado personalizado geralmente implica estas principais tarefas:
Muitos dos widgets implementados em org.eclipse.swt.custom utilizam esta abordagem. Encontra-se um exemplo simples em CLabel.
Encontram-se mais informações sobre widgets personalizados em Criar widgets próprios com SWT.