Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
This section contains the code for the BeanInfo classes for the BeansBook.Simulator package. All of the concepts and techniques used by these classes have been discussed in this chapter. Instead of boring you by describing the code, I'm just including it here for you to look at if you wish.
package BeansBook.Simulator;
import java.beans.*;
import java.lang.reflect.*;
public class TemperatureBeanInfo extends SimpleBeanInfo
{
// return a bean descriptor for the Temperature object
public BeanDescriptor getBeanDescriptor()
{
// create an instance of BeanDescriptor
BeanDescriptor bd = new BeanDescriptor(Temperature.class);
// set the display name
bd.setDisplayName("Temperature Source");
// return the descriptor
return bd;
}
// return the property descriptors
public PropertyDescriptor[] getPropertyDescriptors()
{
try
{
// get the Temperature class
Class c = Temperature.class;
// get the get method for the Temperature property
Method getter = c.getMethod("returnTemperature", null);
// create the parameters array for the set method of the
// Temperature property
Class[] params = { java.lang.Double.TYPE };
// get the set method
Method setter = c.getMethod("assignTemperature", params);
// create a property descriptor for the Temperature property
PropertyDescriptor pd = new PropertyDescriptor("Temperature",
getter, setter);
// the Temperature property is bound
pd.setBound(true);
// the Temperature property is not constrained
pd.setConstrained(false);
// create the property descriptor array and return it
PropertyDescriptor[] pda = { pd };
return pda;
}
catch (NoSuchMethodException e)
{
return null;
}
catch (SecurityException e)
{
return null;
}
}
// return the event set descriptors
public EventSetDescriptor[] getEventSetDescriptors()
{
try
{
// the method names for the listener interface
String[] names = { "propertyChange" } ;
// create the event set descriptor
EventSetDescriptor ed =
new EventSetDescriptor(Temperature.class,
"Property Change Event",
PropertyChangeListener.class,
names,
"addPropertyChangeListener",
"removePropertyChangeListener");
// create the descriptor array and return it
EventSetDescriptor[] eda = { ed } ;
return eda;
}
catch (IntrospectionException e)
{
return null;
}
}
}