Está en la página 1de 9

GUIA 4 Uso de Swing bsico.

Facultad: Ingeniera Escuela: Computacin Asignatura: Java.

I.OBJETIVOS

Que el estudiante aplique los conceptos tericos de Swing. Que el estudiante pueda identificar las instrucciones del Swing en NetBeans IDE 6.1.

II. INTRODUCCIN TERICA

Introduccin a Swing:
Swing es una biblioteca grfica para Java que forma parte de las Java Foundation Classes (JFC). Incluye widgets para interfaz grfica de usuario tales como cajas de texto, botones, desplegables y tablas.

Historia
La Internet Foundation Classes (IFC) era una biblioteca grfica para el lenguaje de programacin Java desarrollada originalmente por Netscape y que se public en 1996. Desde sus inicios el entorno Java ya contaba con una biblioteca de componentes grficos conocida como AWT. Esta biblioteca estaba concebida como una API estandarizada que permita utilizar los componentes nativos de cada sistema operativo.

Ventajas: * El diseo en Java puro posee menos limitaciones de plataforma. * El desarrollo de componentes Swing es ms activo. * Los componentes de Swing soportan ms caractersticas. Desventajas: * La mayora de los browsers no incluyen clases swing, por lo que es necesario utilizar un plugin java.

GUA 4

pg. 1

* Los componentes swing generalmente son ms lentos y presentan ms problemas debido a que estn hechos en Java puro, y suelen presentar problemas relacionados con vdeo en varias plataformas. * No siempre tienen el mismo aspecto que en el sistema donde fueron diseados.

III. PROCEDIMIENTO

Ejemplo 1:
Nombre de la Clase: HolaMundoSwing.java Creacin y visualizar una ventana La ventana principal de la aplicacin debe ser JFrame. El siguiente cdigo crea un JFrame, lo cual agrega dentro una etiqueta JLabel que pone "Hola mundo" y lo muestra en pantalla.

GUA 4

pg. 2

Ejemplo 2:
Nombre de la Clase: PruebaMarcoSencillo.java

import javax.swing.*; import java.awt.*; import java.awt.event.*; public class HolaMundoSwing { /** Creates a new instance of HolaMundoSwing */ public HolaMundoSwing() { } /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here JFrame frame = new JFrame("HolaMundoSwing");// Se crea el JFramen. JLabel label = new JLabel("Hola Mundo");// Se crea el JLabel. frame.getContentPane().add(label);//se introduce el label al frame // Para que termine la aplicacin al pulsar la x de arriba a la derecha. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack();// Se hace que JFrame tenga el tamao justo para que quepa el JLabel frame.setVisible(true);// Se visualiza. } }

Creacin de un marco. Las ventanas de nivel superior (esto es, las que no estn dentro de otra ventana) reciben el nombre de Marco en Java. La biblioteca AWT posee una clase llamada Frame que sirve para este tipo de ventana. La versin de Swing de esta clase se denomina JFrame y extiende (hereda) a la clase Frame.

GUA 4

pg. 3

import javax.swing.JFrame; /** * * @author Santiago Jos Campos Robles. */ public class PruebaMarcoSencillo { /** Creates a new instance of PruebaMarcoSencillo */ public PruebaMarcoSencillo() { } /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here MarcoSencillo marco = new MarcoSencillo(); marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); marco.setVisible(true); } } class MarcoSencillo extends JFrame { public MarcoSencillo() { setSize(ANCHURA_PREFIJADA, ALTURA_PREFIJADA); } public static final int ANCHURA_PREFIJADA=300; public static final int ALTURA_PREFIJADA=200; }

Vamos a revisar este programa lnea por lnea. Las clases de Swing se encuentran en el paquete Javax.swing. El nombre del paquete, javax, indica que se trata de un paquete de extensin de Java, y no de un paquete de base. Las clases de Swing son, ciertamente una extensin de java 1.1. Pero en Java 2, el paquete Swing ya no es una extensin, sino que forma parte de la jerarqua bsica. De forma predeterminada, los marcos tienen un tamao ms bien intil de 0x0 pxeles. Nosotros definimos la subclase MarcoSencillo cuyo constructor especifica un tamao de 300x200 pxeles. En el mtodo main de la clase PruebaMarcoSencillo, empezamos por construir un objeto de tipo MarcoSencillo.

GUA 4

pg. 4

A continuacin, definimos lo que debe ocurrir cuando el usuario cierra este marco. Para este programa en particular, deseamos que el programa concluya. Para seleccionar este comportamiento, empleamos la sentencia: Marco.SetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); En otros programas con mltiples marcos no desearamos que el programa concluyera solo porque el usuario cierre uno de los marcos. De forma predeterminada, el marco se oculta cuando el usuario lo cierra, pero el programa no concluye. No basta construir un marco para que se visualice automticamente. Los marcos nacen invisibles. Esto da al programador la posibilidad de aadir componentes al marco antes de mostrarlo por primera vez. Para mostrar al marco, el mtodo main llama al mtodo setVisible del marco. A partir de JDK 1.4, se pueden desactivar todos los adornos del marco llamado a marco.setUndecorated(true);

Ejemplo 3:
Nombre de la Clase: PruebaMarcoCentrado.java La clase JFrame en si posee nicamente unos pocos mtodos para modificar el aspecto que tiene los marcos. Por supuesto, mediante la magia de la herencia, la mayora de los mtodos que sirva para trabajar con el tamao y posicin del marco provienen de las distintas superclases de JFrame. Entre los mtodos ms importantes cabe mencionar los que siguen: El mtodo dispose que cierra la ventana y recupera los posibles recursos del sistema empleados para crearla. El mtodo setIconImage, que admite un objeto de tipo Image y lo utiliza como icono cuando se minimiza la ventana. El mtodo setTitle que sirve para cambiar el texto que aparece en la barra de ttulo. El mtodo setResizable, que admite un bolean y determina si el usuario va a poder o no cambiar el tamao del marco.

GUA 4

pg. 5

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PruebaMarcoCentrado { /** Creates a new instance of PruebaMarcoCentrado */ public PruebaMarcoCentrado() { } /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here MarcoCentrado marco = new MarcoCentrado(); marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //marco.setExtendedState(Frame.MAXIMIZED_BOTH); marco.setVisible(true); } } class MarcoCentrado extends JFrame { public MarcoCentrado() { Toolkit Kit = Toolkit.getDefaultToolkit(); Dimension tamanoPantalla = Kit.getScreenSize(); int alturaPantalla = tamanoPantalla.height; int anchuraPantalla = tamanoPantalla.width;

setSize(anchuraPantalla/2, alturaPantalla/2); setLocation(anchuraPantalla/4, alturaPantalla/4); Image img = Kit.getImage("uvas.jpg"); setIconImage(img); setTitle("Marco Centrado"); } }
Explicacin del cdigo ms relevante: Para averiguar el tamao de la pantalla, se ha llamado al mtodo esttico getDefaulToolkit de la clase Toolkit para obtener el objeto Toolkit. A continuacin, llama al mtodo getScreenSize, que proporciona el tamao de la pantalla en la forma de un objeto de tipo Dimension. Los objetos Dimension contiene simultneamente una anchura y una altura. Nota: Pruebe agregando el siguiente cdigo: Marco.setExtendedState(Frame.MAXIMIZED_BOTH);

GUA 4

pg. 6

MANEJO DE EVENTOS:
El manejo de eventos es de vital importancia capital para los programas que posee una interfaz de usuario grfica. Para implementar las interfaces de usuario, es preciso dominar la forma en que Java maneja los eventos. Bases del manejo de eventos Todo entorno operativo que admite GUI monitoriza constantemente los eventos tales como teclas pulsadas o clic de ratn. El entorno operativo notifica estos eventos a los programas que estn en ejecucin. Entonces cada programa decide lo que debe hacer, si procede, como respuesta a estos eventos. Dentro de los lmites de los eventos que resultan conocidas para AWT, tenemos un completo control de la forma en que se transmiten los eventos desde las fuentes de eventos (como los botones o las barras de desplazamiento) hasta los oyentes de eventos. Cualquier objeto puede ser nombrado oyente de eventos; en la prctica, seleccionaremos un objeto que puede llevar a cabo de forma cmoda la respuesta deseada para ese evento. En resumen, vase un esquema general de la forma en que funciona el manejo de eventos en AWT. Un objeto oyente es un ejemplar de una clase que implementa una interfaz denominada una interfaz de oyente. Una fuente de eventos es un objeto en que se pueden registrar objetos oyentes y enviar a esos objetos otros objetos de eventos. La fuente de eventos enva objetos de eventos a todos los oyentes registrados en ella cuando se produce un evento. Los objetos oyentes utilizarn entonces la informacin contenida en el objeto de evento para determinar su reaccin frente al evento. Para registrar un objeto oyente en el objeto fuente se emplean unas lneas de cdigo cuyo modelo es similar al siguiente: objetoFuentedeEventos.addEvenListener(objetoOyentedeEventos) Vase un ejemplo: ActionListener oyente =; JButton boton = new JButton(OK); boton.addActionListener(oyente); ahora el objeto oyente recibe una notificacin siempre que se produce un evento de accin en el botn. Para los botones, como cabe esperar, un evento de accin es un clic en el botn.

Ejemplo 4:

GUA 4

pg. 7

Nombre de la Clase: PruebaBoxLayout.java

import java.awt.Component; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.WindowConstants; public class PruebaBoxLayout { /** Creates a new instance of PruebaBoxLayout */ public PruebaBoxLayout() { } /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here JFrame v = new JFrame("Ejemplo Utilizando BoxLayout"); v.getContentPane().setLayout(new BoxLayout(v.getContentPane(),BoxLayout.Y_AXIS)); // Se crea un botn centrado y se aade JButton boton = new JButton("Bienvenidos a NetBeans IDE 6.1"); boton.setAlignmentX(Component.CENTER_ALIGNMENT); v.getContentPane().add(boton); // Se crea una etiqueta centrada y se aade JLabel etiqueta = new JLabel("El Segundo Examen es de Interfaz Grfica.!!!!!"); etiqueta.setAlignmentX(Component.CENTER_ALIGNMENT); v.getContentPane().add(etiqueta); v.pack(); v.setVisible(true);// Visualizar la ventana v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }

GUA 4

pg. 8

GUA 4

pg. 9

También podría gustarte