Properties |
To get the most out of this section, first read Chapters 7, Properties, and Chapter 8, Introspection, of the JavaBeans API Specification.
If you create a Bean class, give it an instance variable named
color
, and accesscolor
through a getter method namedgetColor
and a setter method namedsetColor
, then you have created a property.Properties are aspects of a Bean's appearance and behavior that are changeable at design time.
Property getter and setter method names follow specific rules, called design patterns. By using these design pattern-based method names, JavaBeans-enabled builder tools (and the BeanBox) can
- Discover a Bean's properties
- Determine the propertys' read/write attributes
- Determine the propertys' types
- Locate an appropriate property editor for each property type
- Display the propertys (usually in a property sheet)
- Alter those properties (at design time)
For example, a builder tool, on introspecting your Bean, discovers two methods:
From this the builder tool infers that a property named color exists, that it is readable and writeable, and that it's type ispublic Color getColor() { ... } public void setColor(Color c) { ... }Color
. Further, the builder tool can attempt to locate a property editor for that type, and display the property (usually in a property sheet) so it can be edited.Adding a Color Property to
SimpleBean
Make the following changes to
SimpleBean.java
to add a color property:
- Create and initialize a private instance variable.
private Color color = Color.green;- Write a
public
getter method.public Color getColor(){ return color; }- Write a
public
setter method.public void setColor(Color newColor){ color = newColor; repaint(); }- Override the inherited
paint()
method. This is a requirement for all subclasses of Canvas.public void paint(Graphics g) { g.setColor(color); g.fillRect(20, 5, 20, 30); }- Compile the Bean, load it in the ToolBox, and create an instance in the BeanBox.
The results are:
SimpleBean
will be displayed with a green centered rectangle.- The Properties sheet will contain a new color property. The introspection mechanism will also search for a color property editor. A Color property editor is one of the default editors supplied with the BeanBox. This editor is assigned as the
SimpleBean
color property editor. Click on the color property in the Properties sheet to run this editor. See section 9.2 of the JavaBeans API Specification for more information about property editors, particulary how the BeanBox searches for a property editor.Here is a BeanBox illustration showing the revised
SimpleBean
instance within the BeanBox,SimpleBean
's new color property within the Properties sheet, and the Color property editor shipped with the BeanBox. Remember, clicking on thecolor
property entry in the Properties sheet displays this editor.You can change the color property by menu, or by RGB value. Try changing colors.
Here is the complete
SimpleBean
source code, revised to add acolor
property.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); } }
Properties |