SlideShare una empresa de Scribd logo
GUIA 4
                                                                    Facultad: Ingeniería
Uso de Swing básico.
                                                                    Escuela: Computación
                                                                    Asignatura: Java.

I.OBJETIVOS


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


II. INTRODUCCIÓN TEÓRICA


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

Historia
La Internet Foundation Classes (IFC) era una biblioteca gráfica para el lenguaje de
programación Java desarrollada originalmente por Netscape y que se publicó en 1996.

Desde sus inicios el entorno Java ya contaba con una biblioteca de componentes gráficos
conocida como AWT. Esta biblioteca estaba concebida como una API estandarizada que
permitía utilizar los componentes nativos de cada sistema operativo.


Ventajas:
  * El diseño en Java puro posee menos limitaciones de plataforma.
  * El desarrollo de componentes Swing es más activo.
  * Los componentes de Swing soportan más características.

Desventajas:
  * La mayoría de los browsers no incluyen clases swing, por lo que es necesario utilizar
     un plugin java.




                                                                           GUÍA 4   pág. 1
* Los componentes swing generalmente son más lentos y presentan más
    problemas debido a que están hechos en Java puro, y suelen presentar problemas
    relacionados con vídeo en varias plataformas.
  * No siempre tienen el mismo aspecto que en el sistema donde fueron diseñados.


III. PROCEDIMIENTO


Ejemplo 1:

Nombre de la Clase: HolaMundoSwing.java

Creación y visualizar una ventana

La ventana principal de la aplicación debe ser JFrame. El siguiente código crea un
JFrame, lo cual agrega dentro una etiqueta JLabel que pone "Hola mundo" y lo muestra
en pantalla.




                                                                       GUÍA 4      pág. 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 aplicación al pulsar la x de arriba a la derecha.
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     frame.pack();// Se hace que JFrame tenga el tamaño justo para que quepa el
                          JLabel
     frame.setVisible(true);// Se visualiza.

     }
     }


Creación de un marco.

Las ventanas de nivel superior (esto es, las que no están 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 versión de Swing de esta clase se denomina JFrame y
extiende (hereda) a la clase Frame.




                                                                          GUÍA 4   pág. 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 línea por línea.
Las clases de Swing se encuentran en el paquete Javax.swing. El nombre del paquete,
javax, indica que se trata de un paquete de extensión de Java, y no de un paquete de
base. Las clases de Swing son, ciertamente una extensión de java 1.1. Pero en Java 2, el
paquete Swing ya no es una extensión, sino que forma parte de la jerarquía básica.

De forma predeterminada, los marcos tienen un tamaño más bien inútil de 0x0 píxeles.
Nosotros definimos la subclase MarcoSencillo cuyo constructor especifica un tamaño de
300x200 píxeles. En el método main de la clase PruebaMarcoSencillo, empezamos por
construir un objeto de tipo MarcoSencillo.




                                                                         GUÍA 4    pág. 4
A continuación, 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 múltiples marcos no desearíamos 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 automáticamente. Los marcos nacen
invisibles. Esto da al programador la posibilidad de añadir componentes al marco antes de
mostrarlo por primera vez. Para mostrar al marco, el método main llama al método
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 métodos para modificar el aspecto
que tiene los marcos. Por supuesto, mediante la magia de la herencia, la mayoría de los
métodos que sirva para trabajar con el tamaño y posición del marco provienen de las
distintas superclases de JFrame. Entre los métodos más importantes cabe mencionar los
que siguen:
    • El método dispose que cierra la ventana y recupera los posibles recursos del
        sistema empleados para crearla.
    • El método setIconImage, que admite un objeto de tipo Image y lo utiliza como
        icono cuando se minimiza la ventana.
    • El método setTitle que sirve para cambiar el texto que aparece en la barra de
        título.
    • El método setResizable, que admite un bolean y determina si el usuario va a
        poder o no cambiar el tamaño del marco.




                                                                          GUÍA 4   pág. 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");
             }
         }

Explicación del código más relevante:
Para averiguar el tamaño de la pantalla, se ha llamado al método estático getDefaulToolkit
de la clase Toolkit para obtener el objeto Toolkit. A continuación, llama al método
getScreenSize, que proporciona el tamaño de la pantalla en la forma de un objeto de tipo
Dimension. Los objetos Dimension contiene simultáneamente una anchura y una altura.

Nota: Pruebe agregando el siguiente código:
Marco.setExtendedState(Frame.MAXIMIZED_BOTH);



                                                                           GUÍA 4   pág. 6
MANEJO DE EVENTOS:

El manejo de eventos es de vital importancia capital para los programas que posee una
interfaz de usuario gráfica. 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 ratón. El entorno operativo notifica estos eventos a los
programas que están en ejecución. Entonces cada programa decide lo que debe hacer, si
procede, como respuesta a estos eventos.

Dentro de los límites 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 práctica, seleccionaremos
un objeto que puede llevar a cabo de forma cómoda la respuesta deseada para ese
evento.

En resumen, véase 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 envía objetos de eventos a todos los oyentes registrados en
       ella cuando se produce un evento.
   • Los objetos oyentes utilizarán entonces la información contenida en el objeto de
       evento para determinar su reacción frente al evento.
Para registrar un objeto oyente en el objeto fuente se emplean unas líneas de código cuyo
modelo es similar al siguiente:
          objetoFuentedeEventos.addEvenListener(objetoOyentedeEventos)

Véase un ejemplo:

ActionListener oyente =…;
JButton boton = new JButton(“OK”);
boton.addActionListener(oyente);

ahora el objeto oyente recibe una notificación siempre que se produce un “evento de
acción” en el botón. Para los botones, como cabe esperar, un evento de acción es un clic
en el botón.
Ejemplo 4:


                                                                           GUÍA 4    pág. 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 botón centrado y se añade
                 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 añade
                 JLabel etiqueta = new JLabel("El Segundo Examen es de Interfaz
 Gráfica.!!!!!");
                 etiqueta.setAlignmentX(Component.CENTER_ALIGNMENT);
                 v.getContentPane().add(etiqueta);
                 v.pack();
                 v.setVisible(true);// Visualizar la ventana

         v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
     }
 }




                                                                        GUÍA 4    pág. 8
GUÍA 4   pág. 9

Más contenido relacionado

PPSX
Clase n°1 java
PDF
Uso de Excepciones en JAVA
PPS
Clase n°2 3-4 java
PDF
62016561 java
PDF
Jyoc java-cap21 jse avanzado
PPT
Enclausulamiento java
PDF
Concurrencia en Java
PPT
Best Practices
Clase n°1 java
Uso de Excepciones en JAVA
Clase n°2 3-4 java
62016561 java
Jyoc java-cap21 jse avanzado
Enclausulamiento java
Concurrencia en Java
Best Practices

La actualidad más candente (20)

PDF
Semana 2 Clases y Objetos en Java
DOCX
Estructuras de control
PPT
Enclausulamiento java
PDF
Semana 3 Herencia en Java
PDF
[ES] Manejo de datos y excepciones
PPTX
Programación multitarea
DOCX
Comandos java
PDF
Programación orientada a objetos (I)
PPT
Paquetes De Programacion
PDF
2.11.gui ejercicio swing-holaadios
PPTX
Portafolio parcial 2
PDF
Patrones de diseño I
PDF
Curso de iniciacion a la programacion con visual basic net
PDF
Unidad i poo avanzada
PDF
Ejercicios de evaluación de fundametnos de programacion en JAva
PDF
Junit con netbeans
PDF
C6 net beansentradasysalidas
PPTX
Java 1
PPTX
Hilos – threads en java
Semana 2 Clases y Objetos en Java
Estructuras de control
Enclausulamiento java
Semana 3 Herencia en Java
[ES] Manejo de datos y excepciones
Programación multitarea
Comandos java
Programación orientada a objetos (I)
Paquetes De Programacion
2.11.gui ejercicio swing-holaadios
Portafolio parcial 2
Patrones de diseño I
Curso de iniciacion a la programacion con visual basic net
Unidad i poo avanzada
Ejercicios de evaluación de fundametnos de programacion en JAva
Junit con netbeans
C6 net beansentradasysalidas
Java 1
Hilos – threads en java
Publicidad

Destacado (20)

PDF
Guia1 java
PDF
Guia2 java
PDF
Guia3 java
PDF
Guia8 java
PDF
Guía de Laboratorio 1 - VB.NET 2005
PDF
HTML
PDF
Guia de Laboratorios 6 - VB.NET 2005
PDF
Guia de Laboratorios 5 - VB.NET 2005
PDF
Guia de Laboratorios 2 - VB.NET 2005
PDF
Guia de Laboratorios 3 - VB.NET 2005
PDF
Proyecto, PHP y MySQL
PDF
Guia N5 Proyectos Web Consultas Php Y My Sql
PDF
Guia N3 Proyectos Web Php Css, Js
PDF
Guia N1 Proyectos Web Html
PDF
Guia7 java
PDF
Guia N2 Proyectos Web Php
PDF
Guia6 java
PDF
Guia5 java
PDF
Guia N4 Proyectos Web My Sql Y Php
PDF
Aplicación de escritorio con java
Guia1 java
Guia2 java
Guia3 java
Guia8 java
Guía de Laboratorio 1 - VB.NET 2005
HTML
Guia de Laboratorios 6 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 2 - VB.NET 2005
Guia de Laboratorios 3 - VB.NET 2005
Proyecto, PHP y MySQL
Guia N5 Proyectos Web Consultas Php Y My Sql
Guia N3 Proyectos Web Php Css, Js
Guia N1 Proyectos Web Html
Guia7 java
Guia N2 Proyectos Web Php
Guia6 java
Guia5 java
Guia N4 Proyectos Web My Sql Y Php
Aplicación de escritorio con java
Publicidad

Similar a Guia4 java (20)

DOCX
Clase swing
PDF
Swing
 
PDF
Java tema06a
PDF
Manuales seminario java-manualdejava-sem 3 - 4
PDF
Java swing
PPTX
Gui interfaz gráfica de usuario javax.swing y java.awt
PDF
Guis en java-1pp_2011_
PPTX
1TAP Tema 1-GUI.pptx
PDF
Guis_en_java_6pp.pdf
PDF
Guis en java-1pp_2012_
PDF
12swing gui
PPTX
Introducción a Swing
PDF
Manejo de ventanas 2
PDF
PDF
Gu is awt_swing
 
PDF
POO Unidad 3: Interfaz gráfica de usuario e hilos
PDF
Programacion en JAVA 2
PDF
Lps 15 gu-iconswing
PPTX
Swing intefaz grafica de usuario
DOCX
Clase swing
Swing
 
Java tema06a
Manuales seminario java-manualdejava-sem 3 - 4
Java swing
Gui interfaz gráfica de usuario javax.swing y java.awt
Guis en java-1pp_2011_
1TAP Tema 1-GUI.pptx
Guis_en_java_6pp.pdf
Guis en java-1pp_2012_
12swing gui
Introducción a Swing
Manejo de ventanas 2
Gu is awt_swing
 
POO Unidad 3: Interfaz gráfica de usuario e hilos
Programacion en JAVA 2
Lps 15 gu-iconswing
Swing intefaz grafica de usuario

Más de odelys2003 (6)

PPTX
Curso de redes
PPT
Introduccion2
PPTX
Sisoper
DOC
Sistoper
DOC
Curso de redes
Introduccion2
Sisoper
Sistoper

Último (20)

PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
PPTX
caso clínico iam clinica y semiología l3.pptx
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
PDF
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
Híper Mega Repaso Histológico Bloque 3.pdf
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
Tomo 1 de biologia gratis ultra plusenmas
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Escuela Sabática 6. A través del Mar Rojo.pdf
Tarea De El Colegio Coding For Kids 1 y 2
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
caso clínico iam clinica y semiología l3.pptx
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL
Lección 6 Escuela Sab. A través del mar rojo.pdf
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
Fundamentos_Educacion_a_Distancia_ABC.pdf
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
V UNIDAD - PRIMER GRADO. del mes de agosto
Híper Mega Repaso Histológico Bloque 3.pdf
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
Tomo 1 de biologia gratis ultra plusenmas
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf

Guia4 java

  • 1. GUIA 4 Facultad: Ingeniería Uso de Swing básico. Escuela: Computación Asignatura: Java. I.OBJETIVOS Que el estudiante aplique los conceptos teóricos de Swing. Que el estudiante pueda identificar las instrucciones del Swing en NetBeans IDE 6.1. II. INTRODUCCIÓN TEÓRICA Introducción a Swing: Swing es una biblioteca gráfica para Java que forma parte de las Java Foundation Classes (JFC). Incluye widgets para interfaz gráfica de usuario tales como cajas de texto, botones, desplegables y tablas. Historia La Internet Foundation Classes (IFC) era una biblioteca gráfica para el lenguaje de programación Java desarrollada originalmente por Netscape y que se publicó en 1996. Desde sus inicios el entorno Java ya contaba con una biblioteca de componentes gráficos conocida como AWT. Esta biblioteca estaba concebida como una API estandarizada que permitía utilizar los componentes nativos de cada sistema operativo. Ventajas: * El diseño en Java puro posee menos limitaciones de plataforma. * El desarrollo de componentes Swing es más activo. * Los componentes de Swing soportan más características. Desventajas: * La mayoría de los browsers no incluyen clases swing, por lo que es necesario utilizar un plugin java. GUÍA 4 pág. 1
  • 2. * Los componentes swing generalmente son más lentos y presentan más problemas debido a que están hechos en Java puro, y suelen presentar problemas relacionados con vídeo en varias plataformas. * No siempre tienen el mismo aspecto que en el sistema donde fueron diseñados. III. PROCEDIMIENTO Ejemplo 1: Nombre de la Clase: HolaMundoSwing.java Creación y visualizar una ventana La ventana principal de la aplicación debe ser JFrame. El siguiente código crea un JFrame, lo cual agrega dentro una etiqueta JLabel que pone "Hola mundo" y lo muestra en pantalla. GUÍA 4 pág. 2
  • 3. 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 aplicación al pulsar la x de arriba a la derecha. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack();// Se hace que JFrame tenga el tamaño justo para que quepa el JLabel frame.setVisible(true);// Se visualiza. } } Creación de un marco. Las ventanas de nivel superior (esto es, las que no están 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 versión de Swing de esta clase se denomina JFrame y extiende (hereda) a la clase Frame. GUÍA 4 pág. 3
  • 4. 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 línea por línea. Las clases de Swing se encuentran en el paquete Javax.swing. El nombre del paquete, javax, indica que se trata de un paquete de extensión de Java, y no de un paquete de base. Las clases de Swing son, ciertamente una extensión de java 1.1. Pero en Java 2, el paquete Swing ya no es una extensión, sino que forma parte de la jerarquía básica. De forma predeterminada, los marcos tienen un tamaño más bien inútil de 0x0 píxeles. Nosotros definimos la subclase MarcoSencillo cuyo constructor especifica un tamaño de 300x200 píxeles. En el método main de la clase PruebaMarcoSencillo, empezamos por construir un objeto de tipo MarcoSencillo. GUÍA 4 pág. 4
  • 5. A continuación, 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 múltiples marcos no desearíamos 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 automáticamente. Los marcos nacen invisibles. Esto da al programador la posibilidad de añadir componentes al marco antes de mostrarlo por primera vez. Para mostrar al marco, el método main llama al método 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 métodos para modificar el aspecto que tiene los marcos. Por supuesto, mediante la magia de la herencia, la mayoría de los métodos que sirva para trabajar con el tamaño y posición del marco provienen de las distintas superclases de JFrame. Entre los métodos más importantes cabe mencionar los que siguen: • El método dispose que cierra la ventana y recupera los posibles recursos del sistema empleados para crearla. • El método setIconImage, que admite un objeto de tipo Image y lo utiliza como icono cuando se minimiza la ventana. • El método setTitle que sirve para cambiar el texto que aparece en la barra de título. • El método setResizable, que admite un bolean y determina si el usuario va a poder o no cambiar el tamaño del marco. GUÍA 4 pág. 5
  • 6. 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"); } } Explicación del código más relevante: Para averiguar el tamaño de la pantalla, se ha llamado al método estático getDefaulToolkit de la clase Toolkit para obtener el objeto Toolkit. A continuación, llama al método getScreenSize, que proporciona el tamaño de la pantalla en la forma de un objeto de tipo Dimension. Los objetos Dimension contiene simultáneamente una anchura y una altura. Nota: Pruebe agregando el siguiente código: Marco.setExtendedState(Frame.MAXIMIZED_BOTH); GUÍA 4 pág. 6
  • 7. MANEJO DE EVENTOS: El manejo de eventos es de vital importancia capital para los programas que posee una interfaz de usuario gráfica. 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 ratón. El entorno operativo notifica estos eventos a los programas que están en ejecución. Entonces cada programa decide lo que debe hacer, si procede, como respuesta a estos eventos. Dentro de los límites 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 práctica, seleccionaremos un objeto que puede llevar a cabo de forma cómoda la respuesta deseada para ese evento. En resumen, véase 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 envía objetos de eventos a todos los oyentes registrados en ella cuando se produce un evento. • Los objetos oyentes utilizarán entonces la información contenida en el objeto de evento para determinar su reacción frente al evento. Para registrar un objeto oyente en el objeto fuente se emplean unas líneas de código cuyo modelo es similar al siguiente: objetoFuentedeEventos.addEvenListener(objetoOyentedeEventos) Véase un ejemplo: ActionListener oyente =…; JButton boton = new JButton(“OK”); boton.addActionListener(oyente); ahora el objeto oyente recibe una notificación siempre que se produce un “evento de acción” en el botón. Para los botones, como cabe esperar, un evento de acción es un clic en el botón. Ejemplo 4: GUÍA 4 pág. 7
  • 8. 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 botón centrado y se añade 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 añade JLabel etiqueta = new JLabel("El Segundo Examen es de Interfaz Gráfica.!!!!!"); etiqueta.setAlignmentX(Component.CENTER_ALIGNMENT); v.getContentPane().add(etiqueta); v.pack(); v.setVisible(true);// Visualizar la ventana v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } } GUÍA 4 pág. 8
  • 9. GUÍA 4 pág. 9