home *** CD-ROM | disk | FTP | other *** search
/ Java 1.2 How-To / JavaHowTo.iso / javafile / ch06 / ColorPicker.java < prev    next >
Text File  |  1998-12-14  |  4KB  |  193 lines

  1. import java.applet.Applet;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4.  
  5.  
  6. /*
  7.  * the Applet class
  8.  */
  9. public class ColorPicker extends Applet implements AdjustmentListener
  10.  
  11. {
  12.  
  13. /*
  14.  * the panel that holds the sliders that
  15.  * control the RGB values
  16.  */
  17. Panel controls = new Panel();
  18.  
  19. /*
  20.  * the panel that holds the sample color
  21.  */
  22. Panel sample = new Panel();
  23.  
  24. public void adjustmentValueChanged(AdjustmentEvent evt)
  25. {
  26.       Object object1 = evt.getSource();
  27.  
  28.       if (object1 ==  (sbRed))
  29.       {
  30.               tfRed.setText(String.valueOf(sbRed.getValue()));
  31.               changecolor();
  32.          }
  33.  
  34.       if (object1 ==  (sbGreen))
  35.       {
  36.               tfGreen.setText(String.valueOf(sbGreen.getValue()));
  37.               changecolor();
  38.          }
  39.  
  40.       if (object1 ==  (sbBlue))
  41.       {
  42.               tfBlue.setText(String.valueOf(sbBlue.getValue()));
  43.               changecolor();
  44.       }
  45. }
  46.  
  47. /*
  48.  *the red scrollbar
  49.  */
  50. Scrollbar sbRed;
  51.  
  52. /*
  53.  * the green scrollbar
  54.  */
  55. Scrollbar sbGreen;
  56.  
  57.  
  58. /*
  59.  * the blue scrollbar
  60.  */
  61. Scrollbar sbBlue;
  62.  
  63. /*
  64.  * the red component TextField
  65.  */
  66. TextField tfRed;
  67.  
  68. /*
  69.  * the green component TextField
  70.  */
  71. TextField tfGreen; 
  72.  
  73. /*
  74.  * the blue component TextField
  75.  */
  76. TextField tfBlue;
  77. int min = 0;
  78. int max = 255;
  79.  
  80. /*
  81.  * initilaizes the applet
  82.  */
  83. public void init () {
  84.  
  85.        this.setLayout(new BorderLayout());
  86.        controls.setLayout (new GridLayout(3,3,5,5));
  87.        this.add ("South",controls);
  88.        this.add ("Center",sample);
  89.  
  90.        tfRed = new TextField (5);
  91.        tfGreen = new TextField (5);
  92.        tfBlue = new TextField (5);
  93.        controls.add (new Label ("Red",1));
  94.        controls.add (new Label ("Green",1));
  95.        controls.add (new Label ("Blue",1));
  96.        controls.add (tfRed);
  97.        controls.add (tfGreen);
  98.        controls.add (tfBlue);
  99.  
  100.        sbRed = new Scrollbar (Scrollbar.HORIZONTAL,0, 1, min, max);
  101.        //set the values for the scrollbar
  102.        // value, page size, min, max
  103.        controls.add (sbRed);
  104.     sbRed.addAdjustmentListener(this);
  105.  
  106.        sbGreen = new Scrollbar (Scrollbar.HORIZONTAL,0, 1, min, max);
  107.        //set the values for the scrollbar
  108.        // value, page size, min, max
  109.        controls.add (sbGreen);
  110.     sbGreen.addAdjustmentListener(this);
  111.  
  112.        sbBlue = new Scrollbar (Scrollbar.HORIZONTAL,0, 1, min, max);
  113.        //set the values for the scrollbar
  114.        // value, page size, min, max
  115.        controls.add (sbBlue);
  116.     sbBlue.addAdjustmentListener(this); 
  117.  
  118.        // sets the text fields to the slider value
  119.        tfRed.setText(String.valueOf(sbRed.getValue()));
  120.        tfGreen.setText(String.valueOf(sbGreen.getValue()));
  121.        tfBlue.setText(String.valueOf(sbBlue.getValue()));
  122.  
  123.        changecolor();
  124. }
  125.  
  126. /** Gets the current value in the text field.
  127.  * That's guaranteed to be the same as the value
  128.  * in the scroller (subject to rounding, of course).
  129.  * @param textField - the textField
  130.  */
  131. double getValue(TextField textField) {
  132.  
  133.        double f;
  134.        try {
  135.               f = Double.valueOf(textField.getText())
  136. σdoubleValue();
  137.        } catch (java.lang.NumberFormatException e) {
  138.               f = 0.0;
  139.        }
  140.        return f;
  141. }
  142.  
  143.  
  144. /*
  145.  * changes the color of the sample to the
  146.  * color defined by the RGB values set by
  147.  * the user
  148.  */
  149. public void changecolor () {
  150.  
  151.        int i;
  152.  
  153.        sample.setBackground(new Color((int)getValue(tfRed),
  154.               (int)getValue(tfGreen), (int)getValue(tfBlue)));
  155.        repaint();
  156. }
  157.  
  158. public void update (Graphics g) {
  159.  
  160.        paintAll(g);
  161. }
  162.  
  163. /*
  164.  * application entry point
  165.  * not used when run as an applet
  166.  * @param args - command line arguments
  167.  */
  168. public static void main (String args[]) {
  169.  
  170.        Frame f = new Frame ("ColorPicker");
  171.        ColorPicker colorPicker = new ColorPicker ();
  172.  
  173.        colorPicker.init ();
  174.        f.addWindowListener(new WindowCloser());
  175.  
  176.     f.setSize (300, 200);
  177.     f.add ("Center", colorPicker);
  178.        f.show ();
  179. }
  180. }
  181.  
  182. class WindowCloser extends WindowAdapter
  183. {
  184.     public void windowClosing(WindowEvent e)
  185.     {
  186.         Window win = e.getWindow();
  187.         win.setVisible(false);
  188.         win.dispose();
  189.         System.exit(0);
  190.     }
  191. }
  192.  
  193.