UC3M Depto. de Ingeniería Telemática
Laboratorio de Aplicaciones Telemáticas

Práctica 2: Swing


1. Primera aplicación Swing

Descarga el código fuente del programa PrimeraAplicacion.java. Analízalo detenidamente, compílalo y ejecútalo.

Modifica el programa para que, cuando se seleccione una opción, se deshabilite el botón correspondiente a dicha opción, y se habilite el otro botón.

Modifica el programa para que la etiqueta mostrada en la parte de abajo de la aplicación aparezca centrada horizontalmente. Puede resultar útil para ello que consultes la documentación de JLabel en la documentación de la API de Java.

2. Imágenes y selecciones en Swing

En este ejercicio trabajaremos con una interfaz gráfica que permite manipular una imagen mediante controles de tipo JCheckBox. Descarga el código fuente de la clase CheckBoxDemo y las imágenes auxiliares. Descomprime las imágenes de tal forma que CheckBoxDemo.java y el directorio images estén en el mismo directorio.

Las principales clases que utiliza este programa son las siguientes. Comprueba para qué sirve cada una de ellas y cómo se usa en el programa:

  • javax.swing.JFrame

  • javax.swing.JComponent

  • javax.swing.JPanel

  • javax.swing.JLabel

  • javax.swing.JCheckBox

  • javax.swing.ImageIcon

  • javax.swing.border.EmptyBorder

  • javax.swing.border.TitledBorder

A continuación de muestran dos capturas de pantalla de la aplicación:

Captura de pantalla de CheckBoxDemo

Captura de pantalla de CheckBoxDemo

Ejecuta el programa. A la vista de cómo funciona y su código fuente, contesta a las siguientes preguntas:

  1. En el constructor de la clase aparece la siguiente instrucción para cada botón (JCheckBox): chinButton.setMnemonic(KeyEvent.VK_C). ¿Qué efecto tiene esta instrucción?

  2. ¿En qué líneas del código se registra el objeto para escuchar los eventos de los botones?

  3. ¿Qué se muestra en la etiqueta pictureLabel? ¿En qué método se actualiza esta etiqueta?

  4. ¿En qué posición del JFrame se añaden los distintos paneles?

  5. ¿Qué método recoge los eventos de los botones? ¿Qué acciones se realizan cuando se captura un evento?

  6. En el método updatePicture() aparece la siguiente instrucción: pictureLabel.setToolTipText(choices.toString()). ¿Para qué se utiliza el método setToolTipText?

3. Aplicación que descarga una imagen

Crea una nueva clase que utilice una caja de texto en la que el usuario escriba la URL de una imagen a mostrar. La aplicación debe mostrar esta imagen, tal y como se muestra en la figura:

Captura de pantalla de la aplicación

La aplicación debe utilizar un control JTextField. El usuario introduce en él una URL. Cuando presione la tecla de retorno de carro, el control genera un evento ActionEvent. En el manual de Swing se indica cómo capturar un evento de acción.

Dispones de más información en el manual de Swing acerca de cómo ajustar los bordes y de cómo ajustar la disposición de los componentes.

4. Disposición de controles con layouts

Los paquetes java.awt y javax.swing proporcionan diversas clases que nos permiten especificar la disposición de los elementos en un contenedor. Estas clases se denominan Layout. En el apartado de layouts del manual de Swing se pueden encontrar ejemplos sobre la utilización de los distintos Layouts disponibles.

Partiendo de esta información, escribe una nueva clase que genere una interfaz con el siguiente aspecto:

Captura de pantalla de la aplicación deseada

Guarda en tu directorio la imagen de la estrella que se muestra en la interfaz, para que tu aplicación la pueda cargar.

Será necesario utilizar una combinación de varios layouts y distintos paneles (JPanel) para distribuir los componentes. Para crear el menú desplegable, utiliza JComboBox (consulta su documentación en la API de Java y en el manual de Swing.


© Carlos III University of Madrid, Spain