Crear Java Beans PDF
Crear Java Beans PDF
Los Java beans son la respuesta de Sun a los controles ActiveX de Microsoft. Los
beans son componentes de código reutilizables escritos en Java que se pueden usar
en distintos entornos de programación. De hecho, funcionan de un modo muy similar a
los controles ActiveX, pues contienen propiedades, métodos y eventos para otros
componentes de código. Utilizando los beans, puede crear sus propios "controles"
Java personalizados, como botones que cambian de color cuando se hace clic sobre
ellos o paneles de cotizaciones de bolsa (stock tickers) que obtienen información de
Internet.
Sun soporta Java beans en el paquete java.beans. Observe las interfaces de dicho
paquete:
A continuación, veremos cómo crear Java beans, desde los más sencillos hasta
los que soportan propiedades y métodos y permiten a los usuarios incrustar otros
controles dentro de ellos.
También puede conectar los beans de un beanbox, con el fin de crear una única
aplicación utilizando varios beans. Por ejemplo, podría conectar un botón al bean
Juggler para que cuando haga clic sobre este botón, el juggler deje de ejecutarse.
Cuando hace clic sobre el bean Juggler, aparece el cuadro de diálogo Event
target, ofreciendo los métodos disponibles a los que se puede llamar en el bean
Juggler cuando se hace clic sobre el botón. Para este ejemplo, seleccione el método
stopJuggling para que el juggler deje de ejecutarse; después, haga clic sobre el
botón OK para cerrar el cuadro de diálogo Event Target.
Eso es todo. Ahora, cuando hace clic sobre el botón del beanbox, el juggler dejará
de ejecutarse.
¡Enhorabuena! Ya ha conectado dos beans, y por lo tanto, ha creado un nuevo
programa.
Cómo puede ejecutar este programa fuera del beanbox? Lea detenidamente la
sección siguiente.
Nota: si desea utilizar cualquiera de los bean que proporciona BDK en un archivo
applet JAR, tendrá que compilarlos primero y asegurarse de que el compilador Java
puede localizar sus archivos de clase. Encontrará estos bean en
C:\BDK\demo\sunw\demo. Además, necesitará compilar el archivo AppletSupport.java
en C:\BDK\beanbox\sunw\beanbox y asegurarse de nuevo de que el compilador Java
localiza los archivos de clase resultantes.
<HTML>
<HEAD>
<TITLE>Ejemplo de applet beans</TITLE>
</HEAD>
<BODY>
<APPLET
CODE=MyApplet.class
WIDTH=200
HEIGHT=200>
<PARAM NAME=archive VALUE="myApplet.jar">
</APPLET>
</BODY>
</HTML>
Crearemos un sencillo Java bean para ver cómo funciona. Este bean se limitará a
cambiar para mostrarse en color rojo, y mostrará una cuenta del número de veces que
se ha hecho clic sobre él.
Situaremos este bean en los directorios de demostración de BDK, de modo que
hay que crear un directorio llamado bean (C:\BDK\demo\sunw\demo\bean) y
guardaremos los archivos de clase de ese bean en ese directorio. Ejecute el código,
bean.java, indicando que este bean forma parte de un paquete llamado
sunw.demo.bean:
package sunw.demo.bean;
import java.awt.*;
import java.awt.event.*;
.
.
.
Mientras permanece activa la clase actual del bean, utilice la clase Canvas para
dibujar el propio bean (también puede usar otras clases, como la clase Panel). El resto
del código es bastane sencillo y se utiliza de manera ordinaria; se añade un
controlador de ratón para registrar los clic del ratón, y se define el tamaño del lienzo ( y
por lo tanto, en tamaño del bean):
package sunw.demo.bean;
import java.awt.*;
import java.awt.event.*;
public bean()
{
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
clicked();
}
});
count = 0;
setSize(200, 100);
}
.
.
.
}
Finalmente, es necesario implementar el método que administra los clic del ratón,
y dibujar el bean, incluyendo el registro de clics, en el método paint:
package sunw.demo.bean;
import java.awt.*;
import java.awt.event.*;
public bean()
{
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
clicked();
}
});
count = 0;
setSize(200, 100);
}
Para especificar que una clase de un archivo JAR es un Java bean, tiene que
pasar sus atributos Java-Bean a True. El archivo de clase se encuentra en el paquete
sunw.demo.bean, lo que significa que se almacenará en el archivo JAR como
sunw/demo/bean/bean (al igual que UNIX, los archivos JAR utilizan barras inclinadas
como separaciones de directorio). Para especificar que este archivo de clase es un
bean, observe cómo queda el archivo de manifiesto, bean.mft:
Name: sunw/demo/bean/bean.class
Java-Bean: True
Esto sirve para crear el Nuevo archivo JAR para este bean, bean.jar, y lo
almacena en el directorio C:\BDK\demo\jars, que es donde el beanbox lo buscará. Así
es como se instala un bean (situando su archivo JAR en ese directorio).
Puede añadir controles Java como botones a sus bean (sólo tiene que asegurarse
en relacionar su bean en una clase que sea un contenedor, como la clase Panel).
Vea un ejemplo en el que se ha añadido un botón a un bean para que éste
muestre el número de veces que se ha hecho clic sobre él. Comience ubicando este
bean, que en este ejemplo llamaremos botón, a la clase Panel y añádalo al paquete
sunw.demo.button (lo que significa que guardará sus archivos de clase en
C:\BDK\demo\sunw\button). Observe cómo crear el panel, modificar su tamaño y
añadir un botón:
package sunw.demo.button;
import java.awt.*;
import java.awt.event.*;
public button()
{
count = 0;
setSize(200, 100);
button1.addActionListener(this);
add(button1);
}
Se trata de activar el botón incrementando el contador de clics, rediseñando el
bean para que muestre el contador y creando el método paint:
package sunw.demo.button;
import java.awt.*;
import java.awt.event.*;
public button()
{
count = 0;
setSize(200, 100);
button1.addActionListener(this);
add(button1);
}
java.lang.Object
|____java.beans. SimpleBeanInfo
java.lang.Object
|____java.beans. FeatureDescriptor
Constructor Descripción
SimpleBeanInfo( ) Construye un objeto BeanInfo.
Método Descripción
BeanInfo[ ] getAdditionalBeanInfo( ) Implementado para indicar que n hay otros
objetos BeanInfo relevantes.
BeanDescriptor getBeanDescriptor( ) Implementado para indicar que no existe
descriptor.
int getDefaultEventIndex( ) Implementado para ocultar la existencia de
un evento predeterminado.
int getDefaultPropertyIndex( ) Implementado para ocultar la existencia de
una propiedad predeterminada.
EventSetDescriptor[ ] Implementado para ocultar la existencia de
getEventSetDescriptors( ) conjuntos de eventos.
Image getIcon(int iconKind) Implementado para negar que no existen
iconos disponibles.
MethodDescriptor[ ] getMethodDescriptors( Implementado para negar la existencia de
) métodos.
PropertyDescriptor[ ] Implementado para negar la existencia de
getPropertyDescriptors( ) propiedades.
Image loadImage(String resourceName) Método usado para ayudar en la carga de
imagines de iconos.
Tabla B. 5 . Constructor de la clase FeatureDescriptor
Constructor Descripción
FeatureDescriptor( ) Construye un FeatureDescriptor.
Método Descripción
Enumeration attributeNames( ) Obtiene un detalle de los nombres
predeterminados de este atributo.
String getDisplayName( ) Visualiza el nombre personalizado de este
atributo.
String getName( ) Devuelve el nombre programático de este
elemento.
String getShortDescription( ) Obtiene la descripción breve de este
elemento.
Object getValue(String attributeName) Recupera un nombre de atributo mediante
esta utilidad.
boolean isExpert( ) Devuelve el valor True en elementos
pensados par usuarios expertos.
boolean isHidden( ) Devuelve el valor True en elementos
pensados para ser usados como una
herramienta.
boolean isPreferred( ) Devuelve el valor True en elementos
particularmente importantes para ser
presentados a otros usuarios.
void setDisplayName(String displayName) Define el nombre visualizado y localizado de
este elemento.
void setExpert(boolean expert) Define a un elemento como "de uso por
expertos".
void setHidden(boolean hidden) Define a un elemento como "de uso sólo
como herramienta".
void setName(String name) Establece el nombre de este elemento.
void setPreferred(boolean preferred) Marca elementos especialmente importantes
para mostrárselos a otros usuarios.
void setShortDescription(String text) Se puede asociar una breve cadena a modo
de descripción.
void setValue(String attributeName, Object Se puede asociar un atributo.
value)
Este es el árbol de herencia de la clase PropertyDescriptor:
java.lang.Object
|____java.beans.FeatureDescriptor
|____java.beans.PropertyDescriptor
Constructor Descripción
PropertyDescriptor(String propertyName, Construye un PropertyDescriptor.
Class beanClass)
PropertyDescriptor(String propertyName, Toma el nombre de una propiedad sencilla
Class beanClass, String getterName, además de nombres de método para leer y
String setterName)ç escribir la propiedad.
PropertyDescriptor(String propertyName, Toma el nombre de una propiedad sencilla
Method getter, Method setter) además de objetos Method para leer y
escribir la propiedad.
Método Descripción
Class getPropertyEditorClass( ) Genera una clase PropertyEditor explícita
que ha sido registrada para esta propiedad.
Class getPropertyType( ) Obtiene el objeto Class de la propiedad.
Method getReadMethod( ) Obtiene el método que debería utilizarse
para leer el valor de la propiedad.
Method getWriteMethod( ) Obtiene el método que debería utilizarse
para escribir el valor de la propiedad.
boolean isBound( ) Actualiza las propiedades que activen el
evento PropertyChange.
boolean isConstrained( ) Intenta actualizar las propiedades que
activen el evento VetoableChange.
void setBound(boolean bound) Intenta actualizar las propiedades que
activen el evento PropertyChange.
void setConstrained(boolean constrained) Intenta actualizar las propiedades que
activen el evento VetoableChange.
void setPropertyEditorClass(Class Normalmente, PropertyEditors será
propertyEditorClass) localizado mediante
PropertyEditorManager.
void setReadMethod(Method getter) Establece el método que debería utilizarse
para leer el valor de la propiedad.
void setWriteMethod(Method setter) Establece el método que debería utilizarse
para escribir el valor de la propiedad.
package sunw.demo.bean2;
import java.awt.*;
import java.awt.event.*;
package sunw.demo.bean2;
import java.awt.*;
import java.awt.event.*;
public Bean2()
{
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me)
{
clicked();
}
});
count = 0;
filled = false;
setSize(200, 100);
}
.
.
.
}
package sunw.demo.bean2;
import java.awt.*;
import java.awt.event.*;
public Bean2()
{
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me)
{
clicked();
}
});
count = 0;
filled = false;
setSize(200, 100);
}
if(filled){
g.setColor(new Color(255, 0, 0));
g.fillRect(0, 0, --width, --height);
}
package sunw.demo.bean2;
import java.beans.*;
package sunw.demo.bean2;
import java.beans.*;
return null;
}
}
package sunw.demo.bean2;
import java.beans.*;
return null;
}
}
Una vez compilada esta nueva clase, (Bean2BeanInfo.java), se sitúa
Bean2BeanInfo.class en C:\BDK\demo\sunw\demo\bean2, junto con las clases que se
creqron al compilar Bean2.java. Ahora es necesario un nuevo archivo de manifiesto
que incluya la clase Bean2BeanInfo. Este es el aspecto de bean2.mft:
Name: sunw/demo/bean2/Bean2BeanInfo.class
Name: sunw/demo/bean2/Bean2.class
Java-Bean: True
Es posible que haya observado que algunos beans muestran iconos en el beanbox.
Puede añadir sus propios iconos a los beans (todo lo que tiene que hacer es agregar
un método getIcon a la clase BeanInfo). Observe cómo implementar este método y de
qué manera administrar todas las posibilidades (iconos monocromo o en color, y de
16x16 ó 32x32 píxels):
if (iconKind == BeanInfo.ICON_MONO_32x32 ||
iconKind == BeanInfo.ICON_COLOR_32x32 ) {
java.awt.Image image = loadImage("Icon32.gif");
return image;
}
return null;
}