## Propiedades Sencillas

> Para obtener el mejor resultado de esta sección, deberías leer primero los capítulos 7 y 8, de la Especificación del API JavaBean.

Si creamos una clase Bean, le damos una variable de ejemplar llamada color, y accedemos a color a través de un método obtnedor llamado getColor y un método seleccionador llamado setColor, entonces hemos creado una propiedad.

Las propiedades son aspectos de la apariencia o comportamiento de un Bean que pueden ser modificados en el momento del diseño.

Los nombres de los métodos para obtener o seleccionar propiedades deben seguir unas reglas específicas, llamadas patrones de diseño. Utilizando estos nombres de métodos basados en patrones de diseño, las herramientas compatibles con JavaBeans (y el BeanBox) pueden:

- Descubrir las propiedades de un Bean.
- Determinar los atributos de lectura/escritura de las propiedades.
- Determinar los tipos de propiedades.
- Localizar un editor apropiado para cada tipo de propiedad.
- Mostrar las propiedades (normalmente en una hoja de propiedades).
- Modificar esas propiedades (en tiempo de diseño).

Por ejemplo, una herramienta de construcciónm cuando introspeccione nuestro Bean, descubrirá dos métodos:

    public Color getColor() { ... }
    public void setColor(Color c) { ... }

A partir de esto la herramienta puede asegurar que existe una propiedad llamada color, que se puede leer y reescribir, y que su tipo es Color. Además, la herramienta puede intentar localizar un editor de propiedad para ese tipo, y mostrar la propiedad para que pueda ser editada.

### Añadir la propiedad Color a SimpleBean

Haremos los siguientes cambios en SimpleBean.java para añadir la propiedad color:

1. Crear e inicializar una variable de ejemplar privada:

         private Color color = Color.green;

2. Escribir un método para obtener la propiedad:

          public Color getColor(){
            return color;
          }

3. Escribir un método para seleccionar la propiedad:

           public void setColor(Color newColor){
            color = newColor;
            repaint();
           }

4. Sobreescribir el método paint(). Esto es necesario para todas las subclases de Canvas.

           public void paint(Graphics g) {
            g.setColor(color);
            g.fillRect(20, 5, 20, 30);
           }

5. Compilar el Bean, cargarlo en el ToolBox, y crear un ejemplar en el BeanBox.

Los resultados son:

- SimpleBean se mostrará con un rectángulo verde centrado.
- La hoja de propiedades contendrá una nueva propiedad Color. El mecanismo de introspección también buscará un editor para la propiedad color. El editor de la propiedad Color es uno de los editores por defecto suministrados con el BeanBox. Este editor se asigna como editor de la propiedad Color de SimpleBean. Pulsa sobre la propiedad color en la hoja de propiedades para lanzar este editor.

Aquí tienes una ilustración del BeanBox que muestra el ejemplar revisado de SimpleBean dentro del BeanBox, la nueva propiedad color en la hoja de propiedades de SimpleBean y un editor de la propiedad color. Recuerda, pulsando sobre la propiedad color en la hoja de propiedades se lanzará este editor.

Aquí tenemos el código fuente completo de SimpleBean revisado para la propiedad color.

    package sunw.demo.simple;

    import java.awt.*;
    import java.io.Serializable;

    public class SimpleBean extends Canvas
                         implements Serializable{

      private Color color = Color.green;

      //property getter method
      public Color getColor(){
         return color;
      }

      //property setter method. Sets new SimpleBean
      //color and repaints.
      public void setColor(Color newColor){
         color = newColor;
         repaint();
      }

      public void paint(Graphics g) {
       g.setColor(color);
       g.fillRect(20, 5, 20, 30);
      }

      //Constructor sets inherited properties
      public SimpleBean(){
       setSize(60,40);
       setBackground(Color.red);
      }
    }

Ozito