Las propiedades indexadas reprensentan coleciones de valores a los que se accede por �ndices como en los arrays. Los patrones de dise�o de las propiedades indexadas son:
//M�todos para acceder al array de propiedades completo public <PropertyType>[] get<PropertyName>(); public void set<PropertyName>(<PropertyType>[] value); //M�todos para acceder a valores individuales public <PropertyType> get<PropertyName>(int index); public void set<PropertyName>(int index, <PropertyType> value);
De acuerdo con estos patrones las herramientas de programaci�n saben que nuestro Bean contiene una propiedad indexada.
El Bean OurListBox ilustra como utilizar las propiedades indexadas. OurListBox desciende de la clase List para proporcionar un Bean que presenta al usuario una lista de elecciones: Choices que se puede proporcionar y dise�ar durante el dise��. Aqu� tienes una ilustraci�n de un ejemplar de OurListBox .

OurListBox expone el item indexado con los siguientes m�todos accesores.
public void setItems(String[] indexprop) {
String[] oldValue=fieldIndexprop;
fieldIndexprop=indexprop;
populateListBox();
support.firePropertyChange("items",oldValue, indexprop);
}
public void setItems(int index, String indexprop) {
String[] oldValue=fieldIndexprop;
fieldIndexprop[index]=indexprop;
populateListBox();
support.firePropertyChange("Items",oldValue, fieldIndexprop);
}
public String[] getItems() {
return fieldIndexprop;
}
public String getItems(int index) {
return getItems()[index];
}
Cuando un item es seleccionado por uno de los m�todos setItems(), OurListBox se puebla con el contenido de un array String.
La exposici�n de las propiedades indexadas es casi tan f�cil como la de las propiedades sencillas. Sin embargo, escribir un editor de propiedades indexadas requiere escribir un editor de propiedades personalizado.
�Editores de Propiedades Indexadas
El Bean OurListBox proporciona un IndexPropertyEditor asociado que es un buen ejemplo de c�mo implementar un editor de propiedades indexadas. La siguiente ilustraci�n muestra un ejemplar de OurListBox en el BeanBox, la hoja de propiedades que contiene una entrada para los items de la propiedad indexada, y el IndexPropertyEditor que sale cuando se pulsa sobre los �tems de la propiedad.

Implementar IndexPropertyEditor es lo mismo que implementar cualquier editor de propiedades personalizado.
- Implementar el interface PropertyEditor.
public class IndexPropertyEditor extends Panel implements PropertyEditor, Action Listener {Se puede utilizar la clase PropertyEditorSupport, utilizando una subclase o como clase interna.
- Denotar el editor personalizado en una clase BeanInfo relacionada. OurListBox tiene una clase OurListBoxBeanInfo relacionada que contiene el siguiente c�digo.
itemsprop.setPropertyEditorClass(IndexPropertyEditor.class); - Hacer que el editor de propiedades sea una fuente de eventos compartidos. El editor de propiedades registrar� los oyentes de la propiedad y disparar� los eventos de cambio de propiedad a esos oyentes. As� es como los cambios en la propiedad se propagan hacia el Bean (mediante la hoja de propiedades). Por eso IndexPropertyEditor ejemplariza una clase interna PropertyChangeSupport.
private PropertyChangeSupport support = new PropertyChangeSupport(this);Proporciona la habilidad de que los objetos registren su inter�s en ser notificados cuando una propiedad es editada.
public void addPropertyChangeListener(PropertyChangeListener l) { support.addPropertyChangeListener(l); } public void removePropertyChangeListener(PropertyChangeListener l) { support.removePropertyChangeListener(l); }Y dispara un evento de cambio de propiedad a dichos oyentes:
public void actionPerformed(ActionEvent evt) { if (evt.getSource() == addButton) { listBox.addItem(textBox.getText()); textBox.setText(""); support.firePropertyChange("", null, null); } else if (evt.getSource()== textBox) { listBox.addItem(textBox.getText()); textBox.setText(""); support.firePropertyChange("",null,null); } ... }
IndexPropertyEditor mantiene listbox como una copia de OurListBox. Cuando se hace un cambio en listbox, se dispara un evento de cambio de propiedad a todos los oyentes.
Cuando una hoja de propiedades, que est� registrada como un oyente de IndexPropertyEditor, recibe un evento de cambio de propiedad desde IndexPropertyEditor, llama a IndexPropertyEditor.getValue() para recuperar los �tems nuevos o cambiados para actualizar el Bean.