SWT (Standard Widget Toolkit) es un kit de desarrollo de aplicaciones gráficas (o sea GUI's) desarrollado por y para el proyecto eclipse que puede utilizarse sin necesidad indispensable del anteriormente citado IDE; y que nos ofrece algunas caráteristicas extra a las de Swing.
En realidad no lo he usado mucho pero parece ser una buena opción para utilizar controles diferentes y, obviamente, parecidos a los del IDE Eclipse.
domingo, 6 de abril de 2008
miércoles, 26 de marzo de 2008
Ejercicio 1: Diseño de la ventana
Descripción
Desarrollar un programa que muestre una secuencia de numeros determinada (1, 2, 3, 4, 5, 7) de manera constante e infinita (después de mostrar un 7 deberá mostrar un 1, 2, 3). Los datos deben mostrarse en una ventana en el centro de la misma como un texto grande y poseer un botón para detener el conteo y la secuencia.
Solución propuesta
Comenzemos por la parte más aburrida desde mi punto de vista: Crear la interfaz, para esto yo se que hay herramientas pero prefiero hacerlo a mano. Para esto necesitamos una ventana, un texto grande y un botón, así que usaremos un JFrame, un JLabel y un JButton.
public class Exercise1 extends JFrame {
private JLabel numberLabel = null;
private JButton stopButton = null;
//Sobreescribimos el constructor para darle un titulo al frame
public Exercise1() {
super("Ejercicio 1");
numberLabel = new JLabel(" ");
stopButton = new JButton("Detener");
}
}
Ahora continuemos con la apariencia de la etiqueta, necesitamos que sea un texto grande
//Recuperamos la fuente de la etiqueta
Font font = numberLabel.getFont();
//Recreamos la fuente con un tamaño de 32 puntos
font = font.deriveFont(32.0);
//Establecemos la fuente nueva de la etiqueta
numberLabel.setFont(font);
Ordenamos los elementos dentro de la ventana. A mi me parece un modelo muy aplicable a un BorderLayout
this.setLayout(new BorderLayout());
this.add(numberLabel, BorderLayout.CENTER);
this.add(stopButton, BorderLayout.PAGE_START);
Y finalmente mostramos el contenido de la ventana
//Ajustamos la ventana para el tamaño de los componentes
this.pack();
//Mostramos la ventana
this.setVisible(true);
Ejercicio 1: Contador infinito
Descripción
Desarrollar un programa que muestre una secuencia de numeros determinada (1, 2, 3, 4, 5, 7) de manera constante e infinita (después de mostrar un 7 deberá mostrar un 1, 2, 3). Los datos deben mostrarse en una ventana en el centro de la misma como un texto grande y poseer un botón para detener el conteo y la secuencia.
Bases de manifiestos.
La variable classpath es un valor que le dice a Java donde buscar las clases que usará para ejecutarse; esto es importante si estamos trabajando con componentes que alguien más ha escrito y nosotros reultilizamos. Por medio de un archivo de manifiesto podemos decirle a Java que use ciertos archivos JAR como parte de su classpath y volver nuestros JAR's en cuasi-ejecutables muy prácticos.
Tomemos un ejemplo simple: Tenemos una clase M que depende de la librería N para poderse ejecutar; M tiene un método main y nos interesa distribuirla por medio de un JAR que pueda ejecutarse facilmente. Para esto vamos a seguir este sencillo proceso:
En posteriores posts detallare un poco más los detalles del proceso y como ordenar un poco el mismo, además de describir las partes que lo forman.
Tomemos un ejemplo simple: Tenemos una clase M que depende de la librería N para poderse ejecutar; M tiene un método main y nos interesa distribuirla por medio de un JAR que pueda ejecutarse facilmente. Para esto vamos a seguir este sencillo proceso:
- Compilar el archivo java de la clase M, esto nos generará un archivo M.class
- Colocar este archivo class en un nuevo directorio, al que llamaremos build.
- Dentro de la carpeta build crearemos una carpeta META-INF.
- En esta nueva carpeta crearemos un archivo de texto llamado MANIFEST.MF. El contenido del archivo más o menos es el siguiente.
Main-Class: paquete.M
Class-Path: N.jar - Empaquetamos el contenido de nuestra carpeta build en un archivo jar.
- Si damos doble click sobre el jar generado debería ejecutarse la clase M
En posteriores posts detallare un poco más los detalles del proceso y como ordenar un poco el mismo, además de describir las partes que lo forman.
jueves, 6 de marzo de 2008
Tareas en Segundo Plano (Swing)
Algunas ocasiones necesitas poner una tarea en especial a ajecutarse cuando halla tiempo, es decir, no en este momento o simplemente que espere a que los recursos esten disponibles para poder dar a otra tarea más importante algo de tiempo. Realizar esto en entornos Swing es bastante simple con la clase SwingUtils. El código es sencillo:
public void ejecutaDespues() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//Hacer algo.
}
});
}
Suscribirse a:
Entradas (Atom)