Widgets personalizados

Tal vez desee ampliar SWT implementando su propio widget personalizado. SWT proporciona el paquete org.eclipse.swt.custom, que contiene controles personalizados que no se encuentran en el conjunto principal de controles de SWT, pero que se necesitan para implementar el entorno de trabajo de la plataforma.

Control
Finalidad
CBanner CBanner se utiliza en el entorno de trabajo para diseñar el área de barra de herramientas y la barra de herramientas de conmutación de perspectiva.
CCombo Similar a Combo, pero puede modificarse su tamaño en sentido vertical, lo que le permite encajar en las celdas de una tabla.
CLabel Similar a Label, pero da soporte al recorte de texto con puntos suspensivos. También soporta un efecto gradual del color de fondo tal como se ve en la vista de entorno de trabajo activa. No soporta la acomodación.
CTabFolder Similar a TabFolder, pero soporta una configuración adicional del aspecto visual de las pestañas (superiores o inferiores) y los bordes.
CTabItem Objeto seleccionable de la interfaz de usuario que corresponde a una pestaña de una página en una carpeta con pestañas (CTabFolder).
SashForm Control de Composite que dispone sus hijos en filas o columnas y utiliza un objeto Sash para separarlos de manera que el usuario pueda redimensionarlos.
ScrolledComposite Control de Composite que desplaza su contenido y, opcionalmente, lo estira para ocupar el espacio disponible.
StyledText Control editable que permite al usuario escribir texto. Los rangos de texto dentro del control pueden tener colores y estilos de font distintos.
ViewForm ViewForm se utiliza en el entorno de trabajo para situar y cambiar de tamaño la etiqueta/barra de herramientas/barra de menús local de una vista.

Implementar un widget personalizado

Una vez que haya determinado que necesita un widget personalizado y decidido qué plataformas deben estar soportadas, puede tomar en consideración varias técnicas de implementación del widget. Estas técnicas se pueden combinar y emparejar en función de lo que esté disponible en la plataforma de OS subyacente.

Implementación nativa

Si la aplicación exige un widget nativo no proporcionado por el SWT, tendrá que implementarlo de manera nativa. Podría ser un widget de plataforma, un widget de otra compañía, o cualquier otro widget de una biblioteca compartida de la plataforma. Puede encontrarse un ejemplo completo de una implementación de widget personalizada nativa en el tema Crear sus propios widgets utilizando SWT.

Combinación de widgets existentes

Los widgets pueden combinarse para formar widgets que sean más sofisticados. Por ejemplo, puede implementarse un Combo que utilice un widget de entrada de texto junto con un botón y una lista desplegable. Para implementar un widget combinado, debe crear una subclase de Composite y gestionar los hijos internamente.

Puede encontrarse un ejemplo simple en CCombo.

Implementación de un diseño personalizado

Podría darse el caso de que no tenga código nativo ni widgets existentes que le ayuden a implementar el nuevo widget. Esto significa que debe diseñar el widget personalmente en el manejador del evento Paint. Aunque esta técnica puede resultar bastante complicada, tiene la ventaja de producir una implementación totalmente transportable.

Los controles de dibujo personalizados se implementan creando una subclase de Canvas o Composite. Cree una subclase Canvas si el widget no va a contener ningún control hijo.

La implementación interna de un widget de diseño personalizado suele implicar las siguientes tareas básicas:

Muchos de los widgets implementados en org.eclipse.swt.custom utilizan este planteamiento. Encontrará un ejemplo simple en CLabel.

En el tema Crear sus propios widgets utilizando SWT encontrará más información sobre los widgets personalizados.