domingo, 3 de abril de 2011

Primer programa en Swing Java (10.02.01)

EL PRIMER PROGRAMA CON SWING



- Este es un ejemplo de las características básicas de una aplicación con SWING.
- Cada programa es SWING esta dividido en:
1. import de paquetes gráficos
2. Configurar el contenedor de alto nivel
3. Mostrar el contenedor
4. Asegurar consistencia del programa. (thread-safe)

2.1. import de paquetes gráficos
- La primera línea incorpora el SWING en el programa
import javax.swing.*;

- En la mayoría de programas se requiere importar además paquetes AWT.
- Estos paquetes se requieren porque SWING usa la infraestructura AWT.
- También usa los eventos AWT.
- Un evento es una acción sobre la aplicación. (presionar un botón, seleccionar un menú...)
import java.awt.*;
import java.awt.event.*;

2.2. Configurar el contenedor de alto nivel
- Cada programa Swing debe tener al menos un contenedor de alto nivel
- Un contenedor de alto nivel muestra y maneja los eventos de sus componentes.
- Se cuenta con tres contenedores de alto nivel: JApplet, JFrame, JDialog.
- JFrame implementa la ventana principal de la aplicación.
- JDialog implementa las ventanas secundarias generadas por otras ventanas.
- JApplet implementa un applet en un browser.

- JFrame implementa los elementos por defecto de una ventana como bordes, titulo, cambio de tamaño, botón para inconizar y cerrar. Estos elementos se llaman decorators. (versión 1.4)

JFrame.setDefaultLookAndFeelDecorated(true);

- La variable frame es un objeto de clase JFrame
- El siguiente código define el contenedor principal.

JFrame frame = new JFrame("HelloWorldSwing");

- Los contenedores de alto nivel (como JFrame) heredan de java.awt.Window
- Los componentes de los contenedores heredan de javax.swing.Jcomponent
- El programa usa un JComponent llamado Jlabel que muestra un texto.
- Estas líneas crean el componente JLabel y lo agregan al contenedor JFrame

JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);

- El JLabel no se agrega directamente al JFrame, sino a la zona de contenidos (contentPane)
- Todos los contenedores de alto nivel tienen una zona de contenidos
- Los componentes de la ventana se encuentran en esta zona
- No se encuentran en esta zona los menús ni los decorators.
- En la versión 1.5 se evitara la complejidad del contentPane y se podrá utilizar directamente el frame.

- Para que el programa termine al presionar el botón Close se requiere:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


2.3. Mostrar el contenedor.
- Para mostrar el contenedor se realiza lo siguiente:

frame.pack();
frame.setVisible(true);

- la primera línea coloca el tamaño de la ventana de acuerdo a sus componentes.

2.4. Asegurar la consistencia.
- Este código asegura que la ventana no se cuelgue antes de mostrarse en pantalla.

javax.swing.SwingUtilities.invokeLater
( new Runnable() {
public void run() { crearMostrarVentana(); }
}
);


2.5. Laboratorio
Modifique el programa cambiando los mensajes del programa. Pruebe los botones de la ventana.
TestSwing.java 
import javax.swing.*;          
public class TestSwing {         
public static void main(String[] args) {  
//Enviar una tarea al administrador de eventos  
//para que cree y muestre la ventana  
javax.swing.SwingUtilities.invokeLater  
(  new Runnable() {  
public void run() { crearMostrarVentana(); }  
}  
);  
}  

// Metodo para crear una ventana.  
private static void crearMostrarVentana() {  
//Asegurarse que contenga los decorators de una ventana.  
JFrame.setDefaultLookAndFeelDecorated(true);  

//Crear y configurar la ventana  
JFrame frame = new JFrame("TestSwing");  
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

//Agregar un label que muestre "Hola Mundo!"  
JLabel label = new JLabel("Hola Mundo!");  
frame.getContentPane().add(label);  

//Mostrar la ventana  
frame.pack();  
frame.setVisible(true);  
}  
}  
Compartir:

0 comentarios:

Publicar un comentario