Java color chooser Appelt

A ColorChooserApplet shows six scroll bars that the user can manipulate to set the red, gree, blue, hue, brightness, and saturation components of a color. A color patch shows the selected color, and there are six labels that show the numerical values of all the components. RGB components are specified as integers in the range 0 to 255.

HSB components are specified as float values in the range 0.0F to 1.0F.

/*******************************************************
*     MYCPLUS Sample Code - https://www.mycplus.com     *
*                                                     *
*   This code is made available as a service to our   *
*      visitors and is provided strictly for the      *
*               purpose of illustration.              *
*                                                     *
* Please direct all inquiries to saqib at mycplus.com *
*******************************************************/


import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class ColorChooserApplet extends Applet implements AdjustmentListener {

   private float[] hsb = new float[3];   // For holding HSB color components.

   private int r = 0, g = 0, b = 0;      // The RGB color components.

   private Scrollbar hueScroll, brightnessScroll, saturationScroll,  // Scroll bars.
                     redScroll, greenScroll, blueScroll;

   private Label hueLabel, brightnessLabel, saturationLabel,  // Display component values.
                 redLabel, greenLabel, blueLabel;

   private Canvas colorCanvas;  // Color patch for displaying the color.

   public void init() {

       Color.RGBtoHSB(0,0,0,hsb);  // Get HSB equivalent of RGB = (0,0,0);

       /* Create Scrollbars with possible values from 0 to 255. */
       hueScroll = new Scrollbar(Scrollbar.HORIZONTAL, (int)(255*hsb[0]), 10, 0, 265);
       saturationScroll = new Scrollbar(Scrollbar.HORIZONTAL, (int)(255*hsb[1]), 10, 0, 265);
       brightnessScroll = new Scrollbar(Scrollbar.HORIZONTAL, (int)(255*hsb[2]), 10, 0, 265);
       redScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);
       greenScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);
       blueScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);

       /* Create Labels showing current RGB and HSB values. */
       hueLabel = new Label(" H = " + hsb[0]);
       saturationLabel = new Label(" S = " + hsb[1]);
       brightnessLabel = new Label(" B = " + hsb[2]);
       redLabel = new Label(" R = 0");
       greenLabel = new Label(" G = 0");
       blueLabel = new Label(" B = 0");

       /* Set background colors for Scrollbars and Labels, so they don't
          inherit the gray background of the applet. */
       hueScroll.setBackground(Color.lightGray);
       saturationScroll.setBackground(Color.lightGray);
       brightnessScroll.setBackground(Color.lightGray);
       redScroll.setBackground(Color.lightGray);
       greenScroll.setBackground(Color.lightGray);
       blueScroll.setBackground(Color.lightGray);

       hueLabel.setBackground(Color.white);
       saturationLabel.setBackground(Color.white);
       brightnessLabel.setBackground(Color.white);
       redLabel.setBackground(Color.white);
       greenLabel.setBackground(Color.white);
       blueLabel.setBackground(Color.white);

       /* Set the applet to listen for changes to the Scrollbars' values */
       hueScroll.addAdjustmentListener(this);
       saturationScroll.addAdjustmentListener(this);
       brightnessScroll.addAdjustmentListener(this);
       redScroll.addAdjustmentListener(this);
       greenScroll.addAdjustmentListener(this);
       blueScroll.addAdjustmentListener(this);

       /* Create a canvas whose background color will always be set to the
          currently selected color. */
       colorCanvas = new Canvas();
       colorCanvas.setBackground(Color.black);

       /* Create the applet format, which consists of a row of
          three equal-sized regions holding the Scrollbars,
          the Labels, and the color patch.  The background color
          of the applet is gray, which will show around the edges
          and between components. */
       setLayout(new GridLayout(1,3,3,3));
       setBackground(Color.gray);
       Panel scrolls = new Panel();
       Panel labels = new Panel();
       add(scrolls);
       add(labels);
       add(colorCanvas);

       /* Add the Scrollbars and the Labels to their respective panels. */
       scrolls.setLayout(new GridLayout(6,1,2,2));
       scrolls.add(redScroll);
       scrolls.add(greenScroll);
       scrolls.add(blueScroll);
       scrolls.add(hueScroll);
       scrolls.add(saturationScroll);
       scrolls.add(brightnessScroll);

       labels.setLayout(new GridLayout(6,1,2,2));
       labels.add(redLabel);
       labels.add(greenLabel);
       labels.add(blueLabel);
       labels.add(hueLabel);
       labels.add(saturationLabel);
       labels.add(brightnessLabel);

   } // end init();


   public void adjustmentValueChanged(AdjustmentEvent evt) {
           // This is called when the user has changed the values on
           // one of the scrollbars.  All the scrollbars and labels
           // and the color patch are reset to correspond to the new color.
       int r1, g1, b1;
       r1 = redScroll.getValue();
       g1 = greenScroll.getValue();
       b1 = blueScroll.getValue();
       if (r != r1 || g != g1 || b != b1) {  // One of the RGB components has changed.
          r = r1;
          g = g1;
          b = b1;
          Color.RGBtoHSB(r,g,b,hsb);
       }
       else {  // One of the HSB components has changed.
           hsb[0] = hueScroll.getValue()/255.0F;
           hsb[1] = saturationScroll.getValue()/255.0F;
           hsb[2] = brightnessScroll.getValue()/255.0F;
           int rgb = Color.HSBtoRGB(hsb[0],hsb[1],hsb[2]);
           r = (rgb >> 16) & 0xFF;
           g = (rgb >> 8) & 0xFF;
           b = rgb & 0xFF;
       }
       redLabel.setText(" R = " + r);
       greenLabel.setText(" G = " + g);
       blueLabel.setText(" B = " + b);
       hueLabel.setText(" H = " + hsb[0]);
       saturationLabel.setText(" S = " + hsb[1]);
       brightnessLabel.setText(" B = " + hsb[2]);
       redScroll.setValue(r);
       greenScroll.setValue(g);
       blueScroll.setValue(b);
       hueScroll.setValue((int)(255*hsb[0]));
       saturationScroll.setValue((int)(255*hsb[1]));
       brightnessScroll.setValue((int)(255*hsb[2]));
       colorCanvas.setBackground(new Color(r,g,b));
       colorCanvas.repaint();  // Tell the system to redraw the canvas in its new color.
   } // end adjustmentValueChanged


   public Insets getInsets() {
          // The system calls this method to find out how much space to
          // leave between the edges of the applet and the components that
          // it contains.  I want a 3-pixel border at each edge.
      return new Insets(3,3,3,3);
   }


}  // end class ColorChooserApplet
M. Saqib: Saqib is Master-level Senior Software Engineer with over 14 years of experience in designing and developing large-scale software and web applications. He has more than eight years experience of leading software development teams. Saqib provides consultancy to develop software systems and web services for Fortune 500 companies. He has hands-on experience in C/C++ Java, JavaScript, PHP and .NET Technologies. Saqib owns and write contents on mycplus.com since 2004.
Related Post