Source of SliderFrame.java


  1: // SliderFrame.java

  3: import java.awt.BorderLayout;
  4: import java.awt.Color;
  5: import java.awt.Container;
  6: import java.awt.Dimension;
  7: import java.awt.GridLayout;
  8: import java.awt.event.WindowAdapter;
  9: import java.awt.event.WindowEvent;
 10: import javax.swing.JFrame;
 11: import javax.swing.JLabel;
 12: import javax.swing.JPanel;
 13: import javax.swing.JSlider;
 14: import javax.swing.SwingConstants;
 15: import javax.swing.event.ChangeListener;
 16: import javax.swing.event.ChangeEvent;

 18: class SliderFrame extends JFrame
 19: {  
 20:    public SliderFrame()
 21:    {  
 22:       colorPanel = new JPanel();
 23:       colorPanel.setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
 24:       
 25:       getContentPane().add(colorPanel, BorderLayout.CENTER);
 26:       createControlPanel();
 27:       setSampleColor();
 28:       pack();
 29:    }

 31:    public void createControlPanel()
 32:    {
 33:       class ColorListener implements ChangeListener
 34:       {  
 35:          public void stateChanged(ChangeEvent event)
 36:          {  
 37:             setSampleColor();
 38:          }
 39:       }
 40:       ChangeListener listener = new ColorListener();

 42:       redSlider = new JSlider(0, 100, 100);
 43:       redSlider.addChangeListener(listener);

 45:       greenSlider = new JSlider(0, 100, 70);
 46:       greenSlider.addChangeListener(listener);

 48:       blueSlider = new JSlider(0, 100, 70);
 49:       blueSlider.addChangeListener(listener);
 50:       
 51:       JPanel controlPanel = new JPanel();
 52:       controlPanel.setLayout(new GridLayout(3, 2));

 54:       controlPanel.add(new JLabel("Red", 
 55:          SwingConstants.RIGHT));
 56:       controlPanel.add(redSlider);

 58:       controlPanel.add(new JLabel("Green", 
 59:          SwingConstants.RIGHT));
 60:       controlPanel.add(greenSlider);

 62:       controlPanel.add(new JLabel("Blue", 
 63:          SwingConstants.RIGHT));
 64:       controlPanel.add(blueSlider);

 66:       getContentPane().add(controlPanel, BorderLayout.SOUTH);      
 67:    }

 69:    
 70:    /**
 71:       Reads the slider values and sets the panel to
 72:       the selected color.
 73:    */
 74:    public void setSampleColor()
 75:    {  // read slider values
 76:    
 77:       float red = 0.01F * redSlider.getValue();
 78:       float green = 0.01F * greenSlider.getValue();
 79:       float blue = 0.01F * blueSlider.getValue();

 81:       // set panel background to selected color
 82:       
 83:       colorPanel.setBackground(new Color(red, green, blue));
 84:       colorPanel.repaint();
 85:    }
 86:    
 87:    private JPanel colorPanel;
 88:    private JSlider redSlider;
 89:    private JSlider greenSlider;
 90:    private JSlider blueSlider;

 92:    private static final int PANEL_WIDTH = 300;
 93:    private static final int PANEL_HEIGHT = 300;
 94: }