Desarrollo de aplicaciones multiplaforma en Linux: Aplicaciones en el escritorio con Java/SWT | ||
---|---|---|
Anterior | Siguiente |
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:
os : Aqui se encuentran las bibliotecas específicas del sistema operativo. Basicamente son bibliotecas nativas que conectan a Java con las bibliotecas del toolkit nativo a traves de JNI
En el caso de Linux encontraremos los subdirectorios linux/x86 y un conjunto de bibliotecas libswt*.so
ws : En este directorio encontraremos la implementacion en Java de SWT asociado a las bibliotecas del directorio os. En la version Linux encontraremos un directorio gtk1x que contiene bibliotecas de clases java swt*.jar y los fuentes Java de estas clases
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 |
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.