Check Color Demo


 

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();
            }
        }
    }
}

Copyright©2002, All Right Reserved

Department of Geography, San Diego State University