martes, 27 de diciembre de 2011

Tutorial: Ventana con Java Swing

El paquete Swing es parte de "Java Foundation Classes" que provee facilidades a los programadores a la hora de construir una interfaz gráfica o GUI. Swing abarca componentes como tablas, marcos, etiquetas, botones... Se les llama componentes Swing porque pertenecen al paquete javax.swing. Antes de la JDK 1.1 las interfaces gráficas se realizaban a través de AWT o Abstract Window Toolkit, de donde Swing ha heredado todo el manejo de eventos. 



Una aplicación Swing se consigue mezclando componentes que siguen estas reglas:
  • Debe existir, al menos, un contenedor de alto nivel (Top-Level Container), que provee el soporte a los componentes Swing para que estas se pinten y puedan manejar eventos.
  • Habrá más componentes colgando de este contenedor de alto nivel, bien sean contenedores o componentes simples.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public class HolaMundoSwing {
    public static void main(String[] args) {
        JFrame frame = new JFrame("HolaMundoSwing");
        frame.getContentPane().setLayout(new FlowLayout());
        final JLabel label = new JLabel("Hola Mundo");
        frame.getContentPane().add(label);
 
        //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        frame.addWindowListener(new java.awt.event.WindowAdapter(){
           public void windowClosing(WindowEvent e){
             System.exit(0);
           }
        }
        );
 
        frame.pack();
        frame.setVisible(true);
    }
}       

Este ejemplo contiene un contenedor de alto nivel, que es el JFrame. El Jframe es una ventana. En java existen dos tipos de ventana, el JFrame y el JDialog. Lo ideal es usar un único Jframe como ventana principal de nuestra aplicación y si usamos más ventanas crearlas mediante JDialog. 
Tanto el JFrame como el JDialog tienen dentro una clase llamada ContainerEsta clase es la encargada de "contener" los botones, campos de texto y otros componentes que queramos añadir. Para añadir componentes, debemos pedir el Container a la ventana y añadirle el componente. Para obtener el Container se llama al método getContentPane() de la ventana. Luego, llamamos al método add() de ese Container.
A la hora de colocar estos componentes en la ventana, debemos fijarnos bien en el tipo de layout que estamos usando. El Container lleva dentro una clase llamada Layout. Según el tipo de layout podemos colocar los componentes en fila, verticales o de forma cuadriculada. En esta página podemos ver los distintos tipos de Layout que hay.

Para añadir los componentes simplemente creamos el componente que queramos, sea un TextField o un botón y lo añadimos con el método add. 


frame.getContentPane().add(label);

Con el método  setDefaultCloseOperation() indicamos a la ventana qué debe hacer cuando se cierre pulsando la X. Pero en nuestro caso le hemos añadido un evento a la ventana que cierra dicha ventana pulsando la X. Las dos formas son válidas. Los eventos los podemos añadir a botones y otros componentes para que realicen distintas acciones al interactuar con éllos.

Con el método pack() conseguimos que la ventana coja el tamaño mínimo para que se puedan ver todos los componentes. Después para que la ventana sea visible, añadimos el método setVisible(True)


No hay comentarios:

Publicar un comentario