/** SliderPanel.java -- This panel contains 3 sliders so that * the user can select a color based on the desired amounts * of red/green/blue. * Notice that when we have a slider, we need a "Change" listener * and we listen for change events. With the slider, we can * call getValue() to find out what the slider is pointing to. */ import java.awt.*; import javax.swing.*; import javax.swing.event.*; public class SliderPanel extends JPanel { private JPanel colorPanel; private JSlider redSlider, greenSlider, blueSlider; private JLabel redLabel, greenLabel, blueLabel; public SliderPanel(JPanel p) { colorPanel = p; int defaultRed = 128; int defaultGreen = 128; int defaultBlue = 255; // The 4 parameters to the JSlider constructor are: // orientation, min value, max value, default starting value. redSlider = new JSlider(JSlider.HORIZONTAL, 0, 255, defaultRed); greenSlider = new JSlider(JSlider.HORIZONTAL, 0, 255, defaultGreen); blueSlider = new JSlider(JSlider.HORIZONTAL, 0, 255, defaultBlue); SliderListener listener = new SliderListener(); redSlider.addChangeListener(listener); greenSlider.addChangeListener(listener); blueSlider.addChangeListener(listener); redLabel = new JLabel("Red: " + defaultRed); greenLabel = new JLabel("Green: " + defaultGreen); blueLabel = new JLabel("Blue: " + defaultBlue); // Put the labels and corresponding sliders in the Panel. add(redLabel); add(redSlider); add(greenLabel); add(greenSlider); add(blueLabel); add(blueSlider); } private class SliderListener implements ChangeListener { public void stateChanged(ChangeEvent e) { int red = redSlider.getValue(); int green = greenSlider.getValue(); int blue = blueSlider.getValue(); redLabel.setText("Red: " + red); greenLabel.setText("Green: " + green); blueLabel.setText("Blue: " + blue); // When we pass integers to the Color constructor, they are // interpreted to be in the range 0-255. colorPanel.setBackground(new Color(red, green, blue)); } } }