The Selector2 and Painter2 Beans
ColorEvent
package cselector2;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class ColorEvent extends EventObject {
private Color color;
public ColorEvent(Object source, Color color) {
super(source);
this.color = color;
}
public Color getColor() {
return color;
}
}
ColorListener
package cselector2;
import java.util.*;
public interface ColorListener extends EventListener {
public void changeColor(ColorEvent ce);
}
Selector2
package cselector2;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.util.*;
public class Selector2 extends Panel
implements AdjustmentListener {
private Color color;
private Vector listeners;
private Scrollbar rScrollbar, gScrollbar, bScrollbar;
public Selector2() {
// Initialize listeners vector
listeners = new Vector();
// Initialize GUI elements
setLayout(new GridLayout(3, 2, 5, 5));
rScrollbar =
new Scrollbar(Scrollbar.HORIZONTAL, 255, 10, 0, 265);
add(rScrollbar);
rScrollbar.addAdjustmentListener(this);
Label rLabel = new Label("Red", Label.LEFT);
add(rLabel);
gScrollbar =
new Scrollbar(Scrollbar.HORIZONTAL, 255, 10, 0, 265);
add(gScrollbar);
gScrollbar.addAdjustmentListener(this);
Label gLabel = new Label("Green", Label.LEFT);
add(gLabel);
bScrollbar =
new Scrollbar(Scrollbar.HORIZONTAL, 255, 10, 0, 265);
add(bScrollbar);
bScrollbar.addAdjustmentListener(this);
Label bLabel = new Label("Blue", Label.LEFT);
add(bLabel);
}
public Insets getInsets() {
return new Insets(5, 5, 5, 5);
}
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
public void paint(Graphics g) {
Dimension d = getSize();
g.drawRect(0, 0, d.width - 1, d.height - 1);
}
public void adjustmentValueChanged(AdjustmentEvent ae) {
Scrollbar source = (Scrollbar)ae.getSource();
int value = ae.getValue();
source.setValue(value);
int r = rScrollbar.getValue();
int g = gScrollbar.getValue();
int b = bScrollbar.getValue();
color = new Color(r, g, b);
fireColorEvent(new ColorEvent(this, color));
}
public void
addColorListener(ColorListener cl) {
listeners.addElement(cl);
}
public void
removeColorListener(ColorListener cl) {
listeners.removeElement(cl);
}
public void fireColorEvent(ColorEvent ce) {
Vector v;
synchronized(this) {
v = (Vector)listeners.clone();
}
for(int i = 0; i < v.size(); i++) {
ColorListener cl = (ColorListener)v.elementAt(i);
cl.changeColor(ce);
}
}
}
Painter2
package cselector2;
import java.awt.*;
public class Painter2 extends Canvas implements ColorListener {
private Color color;
public Painter2() {
color = Color.white;
setSize(50, 50);
}
public void paint(Graphics g) {
Dimension d = getSize();
int w = d.width;
int h = d.height;
g.setColor(color);
g.fillRect(0, 0, w - 1, h - 1);
g.setColor(Color.black);
g.drawRect(0, 0, w - 1, h - 1);
}
public void changeColor(ColorEvent ce) {
this.color = ce.getColor();
repaint();
}
}
Selector2BeanInfo
package cselector2;
import java.beans.*;
import java.awt.event.*;
import java.lang.reflect.*;
public class Selector2BeanInfo extends SimpleBeanInfo {
public PropertyDescriptor[] getPropertyDescriptors() {
PropertyDescriptor pds[] = { };
return pds;
}
public EventSetDescriptor[] getEventSetDescriptors() {
try {
EventSetDescriptor esd1;
String mnames[] = { "changeColor" };
esd1 = new EventSetDescriptor(Selector2.class,
"color", ColorListener.class, mnames,
"addColorListener", "removeColorListener");
EventSetDescriptor esd[] = { esd1 };
return esd;
}
catch(Exception ex) {
ex.printStackTrace();
}
return null;
}
public MethodDescriptor[] getMethodDescriptors() {
MethodDescriptor mds[] = { };
return mds;
}
}
Painter2BeanInfo
package cselector2;
import java.beans.*;
import java.awt.event.*;
import java.lang.reflect.*;
public class Painter2BeanInfo extends SimpleBeanInfo {
public PropertyDescriptor[] getPropertyDescriptors() {
PropertyDescriptor pds[] = { };
return pds;
}
public EventSetDescriptor[] getEventSetDescriptors() {
EventSetDescriptor esds[] = { };
return esds;
}
public MethodDescriptor[] getMethodDescriptors() {
try {
Class c = Painter2.class;
Class pTypes[] = new Class[1];
pTypes[0] = ColorEvent.class;
Method method1 = c.getMethod("changeColor", pTypes);
ParameterDescriptor pds[] = new ParameterDescriptor[1];
pds[0] = new ParameterDescriptor();
MethodDescriptor md1 = new MethodDescriptor(method1, pds);
MethodDescriptor mds[] = { md1 };
return mds;
}
catch(Exception ex) {
ex.printStackTrace();
}
return null;
}
}