Capítulo 4. Desarrollo de aplicaciones con SWT

Tabla de contenidos
El clasico Hola Mundo
Widgets y Layouts
Una aplicacion simple de ejemplo

Para desarrollar con SWT se debe bajar un grupo de bibliotecas del proyecto Eclipse. Hay archivos distintos para cada plataforma, y se debe bajar una versión especifica. Aunque el archivo es bastante grande, la parte que nos interesa es pequeña.

Si vemos el directorio de Eclipse, hay un subdirectorio plugins en donde se encuentran todos los plugins que conforman Eclipse. El que nos interesa corresponde a org.eclipse.swt. En ese directorio encontraremos a su vez dos subdirectorios:

Nota

El proyecto eclipse soporta actualmente solo GTK2, los ejemplos indicados corresponden a la version GTK1

Aqui hay una muestra del contenido completo del directorio org.eclipse.swt

[fcatrin@shaman org.eclipse.swt]$tree
.
|-- about.html
|-- os
|   `-- linux
|       `-- x86
|           |-- about.html
|           |-- cpl-v05.html
|           |-- lgpl-v21.txt
|           |-- libswt-gtk-2034.so
|           |-- libswt-pi-1x-gtk-2034.so
|           `-- libswt-pixbuf-1x-gtk-2034.so
|-- plugin.properties
|-- plugin.xml
`-- ws
    `-- gtk1x
        |-- swt-pi.jar
        |-- swt-pi.jar.bin.log
        |-- swt-pisrc.zip
        |-- swt.jar
        |-- swt.jar.bin.log
        `-- swtsrc.zip

5 directories, 15 files
			

El clasico Hola Mundo

Hacer aplicaciones con SWT es bastante directo y sencillo. Si ya se tiene experiencia con SWING e incluso con GTK, la forma de trabajo será muy familiar.

A continuación, el clasico "Hello Word" en SWT

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;

public class HelloWorld {

	public static void main(String[] args) {
		Display display = new Display();
  
		Shell shell = new Shell(display);
		shell.setText("HelloWorld");
  
		FillLayout layout = new FillLayout();
		layout.type = SWT.VERTICAL;
		shell.setLayout(layout);

		Label label = new Label(shell, SWT.CENTER);
		label.setText("Hello World");
    
		shell.open();
		while (!shell.isDisposed()) 
			if (!display.readAndDispatch()) display.sleep();
	}
}

Este código crea una ventana con el caption "HelloWorld" e inserta una etiqueta al interior de la aquella. Luego, como toda aplicacion basada en eventos, se queda en un ciclo despachando eventos hasta que se cierra la ventana.

Y ya tenemos una aplicacion que ocupa el toolkit nativo, pero multiplataforma.