Lee el API de la clase JComboBox. �Qu� l�nea de c�digo es la correcta para hacer que el combo box sea editable?
La forma apropiada para hacer que un combo box sea editable es llamar al m�todo setEditable:
week.setEditable(true);
�Identificadores para Componentes GUI
JComboBox es s�lo una de las pocas caracter�sticas GUI que vamos a utilizar en la clase UIWestPanel, por eso debemos importar los paquetes javax.swing y java.awt. Los componentes GUI incluyen alguna funcionalidad como desplegar un mensaje y tambi�n necesitamos implementar los interfaces ActionListener y ItemListener.
Luego, configuramos las variables necesarias para los componentes. Este panel consta de JLabels y JTextFields. Declaramos variables para cada uno de ellos.
Sigue estos pasos... |
---|
Tu fichero UIWestPanel.java se deber�a parecer a este ejemplo. |
Ahora empezaremos con el constructor de la clase seleccionando la distribuci�n de este panel como BorderLayout, y seleccionado el color de fondo a white.
Sigue estos pasos... |
---|
|
Ya est�mos listos para trabajar con los componentes individuales de este panel. En secciones anteriores de este curso ya has construido campos de texto, por eso no los cubrimos aqu� en detalle. Frecuentemente las aplicaciones necesitan componentes que puedan ofrecer sugerencias al usuario. Una forma es darle al usuario un men� desplegable con un lista de �tems que el usuario pueda seleccionar, o botones de radio en los que el usuario pueda seleccionar un �tem. Para crear estas caracter�sticas, utilizamos las clases JComboBox y JRadioButton.
�Combo Boxes
Creado con la clase JComboBox, un combo box es un objeto con un �rea editable (si se desea) y una lista desplegable de �tems seleccionables. Los ejemplares de JComboBox no son editables por defecto, pero se pueden hacer editables llamando al m�todo setEditable.
Para crear un JComboBox, llamamos a uno de los siguientes constructores:
- JComboBox(): Crea un combo box por defecto.
- JComboBox(ComboBoxModel aModel): Crear un combo box que toma los �tems de un ComboBoxModel existente.
- JComboBox(Object[] items): Crea un combo box que contiene los elementos del array especificado.
- JComboBox(Vector items): Crea un combo box que contiene los elementos del Vector especificado.
La clase UIWestPanel llama al constructor de JComboBox y le suministra un array de String para crear la lista de �tems.
Un array es un objeto o estructura de datos que contiene m�ltiples elementos del mismo tipo. Los arrays se usan frecuentemente en aplicaciones que necesitan una agrupaci�n de datos asignados a una variable. En este caso, usaremos un array de String para contener varias profundidades de inmersi�n de las que el usuario podr� elegir una.
Podemos definir los arrays de muchas formas. Para el combo box que est�mos creando, la t�cnica m�s f�cil es rellenar el array con los strings a mostrar en el men� desplegable. El siguiente ejemplo muestra un array de strings con los d�as de la semana:
String days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; // This array is populated with seven String objects. // Because they are strings, they must be enclosed in // quotes.
Una vez que se ha definido el array, lo pasamos al constructor de JComboBox:
JComboBox week; String days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; week = new JComboBox(days);
Despu�s de inicializar un combo box con un array para proporcionar los �tems del men� desplegable, podemos seleccionar cu�ndos de esos �tems de la lista se mostrar�n de una vez. Si hay m�s �tems que el n�mero especificado, aparecer�n barras de desplazamiento para que el usuario pueda ver los otros �tems de la lista. Seleccionamos el n�mero m�ximo de filas llamando al m�todo setMaximumRowCount y proporcionado un int con el n�mero de �tems a mostrar:
week.setMaximumRowCount(5);M�s Componentes GUI para la Entrada de Usuario
Un objeto JComboBox usa un objeto ListCellRenderer para determinar c�mo se muestran los elementos. Adem�s tambi�n utiliza un objeto ComboBoxModel para proporcionar m�todos para acceder a los elementos del combo box.
Cuando el usuario hace expl�citamente una selecci�n, el JComboBox dispara un ActionEvent, y el m�todo actionPerformed define que deber�a suceder como resultado de esta selecci�n.
Otro m�todo que utilizaremos es getSelectedItem, al que se le llama posteriormente en el m�todo actionPerformed. El m�todo getSelectedItem devuelte el �tem seleccionado actualmente.
Sigue estos pasos... |
---|
|
Nota:
Podemos modificar el n�mero de filas a mostrar utilizando el m�todo setMaximumRowCount a m�s o menos, seg�n prefiramos. Adem�s, este men� es editable para que el usuario pueda cambiar 50 por 52, o cualquier otro incremento que necesite. |
�Radio Buttons
Los botones de radio aparecen por defecto como peque�os c�rculos, y se pueden asociar con alg� de texto. Se crean en un grupo de los que s�lo se puede seleccionar un bot�n. Cuando se selecciona un bot�n, cualquier otro que estuviera seleccionado se deselecciona.

Usamos uno de los constructores de JRadioButton para crear botones de radio, dependiendo de nuestras necesidades:
- JRadioButton()
Crea un boton de radio inicialmente no seleccionado y sin texto. - JRadioButton(Icon icon)
Crea un bot�n de radio inicialmente no seleccionado con la imagen especificada, pero sin texto. - JRadioButton(Icon icon, boolean selected)
Creaun bot�n de radio con la imagen y el estado de selecci�n especificados, pero sin texto. - JRadioButton(String text, Icon icon)
Crea un bot�n de radio inicialmente no seleccionado, con la imagen y el texto especificados. - JRadioButton(String text, Icon icon, boolean selected)
Crea un bot�n de radio con la imagen, el texto y el estado de selecci�n especificados.
Adem�s de crear los botones, tambi�n debemos a�adirlos a un grupo de botones para que s�lo uno de ellos pueda estar seleccionado.
Aqu� tenemos los cinco pasos para crear un grupo de botones de radio:
- Creamos los botones con la clase JRadioButton:
JRadioButton b1 = new JRadioButton("Shark"); JRadioButton b2 = new JRadioButton("Tuna"); JRadioButton b3 = new JRadioButton("Dolphin");
- Regristramos lo botones con un ItemListener:
b1.addItemListener(this); b2.addItemListener(this); b3.addItemListener(this);
- Creamos un objeto ButtonGroup:
ButtonGroup bg = new ButtonGroup();
- A�adimos los botones al grupo de botones:
bg.add(b1); bg.add(b3); bg.add(b3);
- A�adimos los botones de radio al panel:
JPanel p = new JPanel(); p.add(b1); p.add(b2); p.add(b3);
Cuando se selecciona un bot�n de radio, se genera un ItemEvent y se llama al m�todo itemStateChanged. Dentro de este m�todo, proporcionamos el c�digo para lo que queremos que suceda cuando se selecciona un bot�n de radio. En el caso del panel Log Dives, queremos saber qu� bot�n estaba seleccionado obteniendo el nombre del bot�n. Para obtener el originador de un evento, llamamos al m�todo getItemSelectable.
Sigue estos pasos... |
---|
|
�Completar el Constructor
Ahora crearemos dos botones, uno que permiten al usuario grabar la informaci�n de la inmersi�n y otro que permite leer los datos de otra inmersi�n. Por ahora estos botones son gen�ricos. M�s adelante, les asignaremos texto y funcionalidad. Recuerda que UIWestPanel se concentra en los componentes GUI, no en la funcionalidad.
Una vez que hemos creado las etiquetas, los botones y los botones de radio que necesitamos, creamos un panel para a�adirlos y luego a�adimos el panel al propio panel. Esto completa el constructor de la clase UIWestPanel.
Sigue estos pasos... |
---|
|
Como la clase UIWestPanel construye las caracter�sticas GUI, copia el c�digo del �rea de texto y la imagen del tibur�n a un panel y dentro de este constructor. El panel con estos objetos se puede a�adir al �rea East del panel:
Sigue estos pasos... |
---|
|
Ya hemos completado los componentes gr�ficos para este interface. Cuando se llama al constructor de la clase UIWestPanel desde otra clase, se construye el GUI y est� listo para introducir datos. Algunos de estos componentes tienen alguna funcionalidad que implementaremos en esta clase, pero la funcionalidad principal de los botones va en la clase controladora que crearemos m�s adelante.
�Implementar los M�todos Prometidos
El constructor de la clase UIWestPanel ya est� completo, pero la propia clase no lo est�. Recuerda que esta clase implementa los interfaces ActionListener y ItemListener, lo que significa que debemos implementar los m�todos espec�ficos en esta clase. En estos m�todos, proporcionaremos unas pocas instrucciones para lo que queremos que suceda cuando se utilice el componente gr�fico.
�Qu� m�todos tenemos que implementar? |
---|