Curso Java. Gui Volumen XV: Solución al ejercicio (ListSelectionEvent) e introducción a las ventanas de diálogo

Escrito por Adrián Crespo
Java
0

A pesar de ser vacaciones de Navidad, en RedesZone.net seguimos adelante con el curso de Java. En la entrega de hoy, se producirá un cambio de temario, ya que si las últimas entregas, el curso ha estado centrado en las clases manejadoras de los componentes, ahora vamos a empezar con algo que os puede resultar muy interesante, los diálogos.

En Java esta funcionalidad se implementa utilizando la interfaz de Java JDialog. Nos introduciremos a los JDialog, no sin antes dar solución al ejercicio que dejamos planteado la semana pasada

Por lo tanto lo primero de todo vamos con la solución del ejercicio.

Basándonos en los ejercicios que hemos ido realizando con anterioridad se pedía utilizar una lista para pintar las diferentes figuras utilizando el mismo panel de dibujos.

Esta sería la apariencia de nuestra GUI, una vez realizada los cambios pertinentes.

Sólo he añadido tres figuras, suficiente para hacer el ejemplo. Vamos por lo tanto con la clase aplicación:

Como podéis ver, los cambios son mínimos en esta clase. Se ha añadido un atributo JList al que se le pasa una lista de Strings (el array figuras) y así creamos nuestra lista de elementos. También debemos añadir al final del constructor la función manejadora (ListSelectionListener).

Posteriormente implementamos la clase manejadora en la cual debemos de leer la posición seleccionada de la lista (getSelectedIndex()), y posteriomente pasarlo como argumento a un método de la clase PanelDibujos que ahora veremos. Después nos queda repintar el panel y ya tendríamos lista nuestra clase manejadora.

Nota: la primera posición de la lista lee un 0, nunca un 1

La clase PanelDibujos:


Como podéis ver no cambia nada hasta el método paintComponent(). El método modificaFigura(int valor) le utilizamos para pasarle la figura seleccionada. Teniendo en cuenta la lista que tenemos será 0,1 o 2.

En el paintComponent() lo único que cambian son las condiciones de pintado de las figuras, lo demás es exactamente lo mismo.

Vamos a introducirnos un poco en los diálogos en las GUIs en Java.

Un diálogo (clase JDialog) es un tipo especial de ventana.

  • Con la misma apariencia que un JFrame
  • Normalmente utilizado para requerir información al usuario

Puede crearse asociado a otra ventana (JFrame o JDialog)

  • Que se denomina su “dueño” (owner)
  • Si el dueño se minimiza o maximiza, el diálogo también lo hace

Existen dos tipos de diálogos:

  • Modales: todas las demás ventanas de la aplicación se bloquean, de forma que el usuario sólo puede interaccionar con el diálogo
  • No modales: las demás ventanas no se bloquean

Constructores

JDialog(JFrame owner, String título)

JDialog(JFrame owner, boolean ismodal)

JDialog(JFrame owner, String título, boolean ismodal)

JDialog(JDialog owner, String título)

JDialog(JDialog owner, boolean ismodal)

JDialog(JDialog owner, String título, boolean ismodal)

Métodos

  • Muchos de los disponibles para la clase Frame

void setLocation(int x, int y)

void setSize(int ancho, int alto)

void setResizable(boolean res)

void setVisible(boolean b)

void pack()

void setLayout(LayoutManager mgr)

void add(Component c)

  • y alguno específico

void setModal(boolean mod)

Nota: Si no se quiere que tenga dueño, se puede poner null en el parámetro owner.

Hasta aquí la entrega de hoy, en la próxima entrega continuaremos con la clase JDialog, y haremos el primer ejemplo sencillo de un diálogo en Java.