|
|
Web Configuration:
<applet code="CheckColor.class"
codebase="applet" width=300 height=100>
</applet>
Source Code:
/* CheckColor.java
*
* This example creates a checkbox group and a collection of
* colored canvases. Clicking a checkbox cuases its associated
* color canvas to be selected. Also, clicking a colored canvas
* causes its associated checkbox to be current
*/
import java.awt.*;
import java.awt.event.*;
public class CheckColor extends java.applet.Applet implements ItemListener{
Color[] cbColor = {Color.red, Color.green, Color.blue};
String[] cbName = {"Red","Green","Blue"};
MainCanvas[] cbCanvas = new MainCanvas[3];
CheckboxGroup cgroup = new CheckboxGroup();
public void init () {
Panel p = new Panel(new
GridLayout(0,1));
Panel colorPanel = new Panel(new
GridLayout(1,0));
for (int i = 0; i<cbColor.length;i++){
Checkbox cb =
new Checkbox(cbName[i], cgroup, i==0);
p.add(cb);
cb.addItemListener(this);
colorPanel.add(cbCanvas[i] = new MainCanvas(cbColor[i], cb));
cbCanvas[i].setSize(70,70);
}
setLayout(new BorderLayout());
add(p, BorderLayout.WEST);
add(colorPanel, BorderLayout.CENTER);
}
public void itemStateChanged(ItemEvent e) {
// Update canvas when checkbox
pressed
for (int i = 0; i < cbCanvas.length;
i++){
cbCanvas[i].repaint();
}
}
}
class MainCanvas extends Canvas{
Checkbox cb;
MainCanvas(Color color, Checkbox cb){
setBackground(color);
this.cb = cb;
addMouseListener (new MouseListener());
}
public void paint (Graphics g){
if (cb.getCheckboxGroup().getSelectedCheckbox()==
cb){
Dimension d =
getSize();
g.setColor(Color.black);
g.fillOval(d.width/3, d.height/3, d.width/3, d.height/3);
}
}
class MouseListener extends MouseAdapter{
public void mousePressed (MouseEvent
e){
// update
checkbox group
cb.getCheckboxGroup().setSelectedCheckbox(cb);
// update all
sibling canvases.
for (int i =
0; i < getParent().getComponentCount(); i++){
getParent().getComponent(i).repaint();
}
}
}
} |