Swing y JFC (Java Foundation Classes)

Con un JComboBox editable, una lista desplegable, y un text field, el usuario puede teclear un valor o elegirlo desde una lista. Un ComboBox editable ahorra tiempo de entrada proporcionando atajos para los valores m�s comunmente introducidos.

Un ComboBox no editable desactiva el tecleo pero a�n as� permite al usuario seleccionar un valor desde una lista. Esto proporciona un espacio altenartivo a un grupo de radio buttons o una list.

Aqu� puedes ver una imagen de una aplicaci�n que utiliza un ComboBox editable para introducir un patr�n con el que formatear fechas.

Intenta esto:
  1. Compila y ejecuta el ejemplo. ComboBoxDemo.java.
  2. Introduce un nuevo patr�n eligiendo uno de la lista desplegable. El programa reformatea la fecha y hora actuales.
  3. Introduce un nuevo patr�n tecle�ndolo y pulsando return. De nuevo el programa reformatea la fecha y hora actuales.

Abajo podemos ver el c�digo de ComboBoxDemo.java que crea y configura el ComboBox.

String[] patternExamples = {
	 "dd MMMMM yyyy",
	 "dd.MM.yy",
	 "MM/dd/yy",
	 "yyyy.MM.dd G 'at' hh:mm:ss z",
	 "EEE, MMM d, ''yy",
	 "h:mm a",
	 "H:mm:ss:SSS",
	 "K:mm a,z",
	 "yyyy.MMMMM.dd GGG hh:mm aaa"
};

currentPattern = patternExamples[0];
. . .
JComboBox patternList = new JComboBox(patternExamples);
patternList.setEditable(true);
patternList.setSelectedIndex(0);
patternList.setAlignmentX(Component.LEFT_ALIGNMENT);
PatternListener patternListener = new PatternListener();
patternList.addActionListener(patternListener);

Este programa proporciona los valores para la lista desplegable del ComboBox con un array de strings. Sin embargo, los valores de la lista pueden ser cualquier Object, en cuyo caso el m�todo toString de la clase Object proporciona el texto a mostrar. Para poner una imagen u otro valor que no sea texto en una lista ComboBox, s�lo debemos proporcionar un celda personalizada renderizada con setRenderer.

Observa que el c�digo activa expl�citamente la edici�n para que el usuario pueda teclear valores. Esto es necesario porque, por defecto, un ComboBox no es editable. Este ejemplo particular permite editar el ComboBox porque su lista no proporciona todos los patrones de formateo de fechas posibles.

El c�digo tambi�n registra un oyente de action con el ComboBox. Cuando un usuario selecciona un �tem del ComboBox, se llama a este m�todo.

public void actionPerformed(ActionEvent e) {
    JComboBox cb = (JComboBox)e.getSource();
    String newSelection = (String)cb.getSelectedItem();
    currentPattern = newSelection;
    reformat();
}

El m�todo llama a getSelectedItem para obtener el nuevo patr�n elegido por el usuario, y utilizarlo para reformatear la fecha y la hora actuales.

Cuidado: Un ComboBox es un componente compuesto: comprende un bot�n, un men� desplegable, y cuando es editable, un campo de texto. El ComboBox dispara eventos de alto nivel, como eventos action. Sus componentes disparan eventos de bajo nivel como mouse, key y eventos de foco. Normalmente los componentes compuestos como el ComboBox deber�an proporcionar oyentes para los eventos de alto nivel, porque los eventos de bajo nivel y los subcomponentes que los disparan son dependientes del sistema.

.�Utilizar un ComboBox no Editable

Aqu� podemos ver una imagen de una aplicaci�n que utiliza un ComboBox no editable para permitir al usuario elegir una imagen de mascota desde una lista.

Intenta esto:
  1. Compila y ejecuta el programa. ComboBoxDemo2.java. Tambi�n necesitar�s 5 ficheros de im�genes. Bird.gif, Cat.gif, Dog.gif, Rabbit.gif, y Pig.gif.
  2. Elige una mascota desde la lista desplegable para ver su dibujo.
  3. C�mo usar Radio Buttons proporciona una versi�n de este programa, RadioButtonDemo.java, que utiliza un grupo de botones de r�dio en lugar de un ComboBox. Compila y ejecuta el programa. Compara el c�digo fuente y la operaci�n de los dos programas.

Abajo podemos ver el c�digo de ComboBoxDemo2.java que crea y configura el ComboBox.

...
//in the ComboBoxDemo2 constructor
String[] petStrings = { "Bird",
                        "Cat",
                        "Dog",
                        "Rabbit",
                        "Pig" };

// Crea el combobox,
// desactiva la edici�n
// y selecciona el primero
JComboBox petList = new JComboBox(petStrings);
petList.setSelectedIndex(0);

Este c�digo es similar al c�digo de ComboBoxDemo. Sin embargo, este programa deja el ComboBox no editable (por defecto).

Se utiliza un ComboBox no editable en lugar de un grupo de botones de radio para mostrar una o m�s elecciones en estas situaciones.

  • Cuando el espacio es limitado
  • Cuando el n�mero de elecciones posibles es grande
  • Cuando la lista se crea durante la ejecuci�n

.�El API ComboBox

Las siguientes tablas listan los m�todos y constructores m�s utilizados de JComboBox. Otros m�todos a los que nos gustar�a llamar est�n definidos por las clases JComponent y Component.

El API para utilizar ComboBox se divide en dos categor�as.

.�Seleccionar u Obtener �tems de la Lista del ComboBox

M�todo Prop�sito
JComboBox(ComboBoxModel)

JComboBox(Object[])

JComboBox(Vector)

Crea un ComboBox con una lista predeterminada.
void addItem(Object)

void insertItemAt(Object, int)

A�ade o inserta un �tem en la lista.
Object getItemAt(int)

Object getSelectedItem()

Obtiene un �tem de la lista.
void removeAllItems()

void removeItemAt(int)

void removeItem(Object)

Elimina uno o m�s �tems de la lista.
int getItemCount() Obtiene el n�mero de �tems de la lista.
void setModel(ComboBoxModel)

ComboBoxModel getModel()

Selecciona u obtiene el modelo de datos que proporciona los �tems de la lista.

.�Personalizar la Configuraci�n del ComboBox

M�todo Prop�sito
void setEditabe(boolean)

boolean isEditable()

Selecciona u Obtiene si el usuario puede teclear en el ComboBox.
void setRenderer(ListCellRenderer)

ListCellRenderer getRenderer()

Selecciona u obtiene el objeto responsable para crear el �tem seleccionado en el ComboBox. Utilizado cuando el ComboBox no es editable.
void setEditor(ComboBoxEditor)

ComboBoxEditor getEditor()

Selecciona u obtiene el objeto responsable del pintado y edici�n del �tem seleccionado en el ComboBox. Esto s�lo se utiliza cuando el ComboBox es editable.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR