import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.applet.*;
import java.net.*;

/** Program to demonstrate JSlider -- bare bones.<p>
*
* Screen snap...<br>
* <center><img src="DemoSliderBB-1.gif"></center><p>
*
* @see <a href="DemoSliderBB.java">source code</a>
* @author Scott MacKenzie, 2002
*/
public class DemoSliderBB
{
   public static void main(String[] args)
   {
      // commented out (Java L&F appears better!)
      //{
      //   UIManager.setLookAndFeel(
      //      UIManager.getSystemLookAndFeelClassName());
      //} catch (Exception e) {}

      DemoSliderBBFrame frame = new DemoSliderBBFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setTitle("DemoSliderBB");
      frame.pack(); 
      frame.show();      
   }
}

class DemoSliderBBFrame extends JFrame implements ChangeListener
{
   private JSlider slider;
   private JTextField sliderValue;

   // constructor

   public DemoSliderBBFrame()
   {
      // ----------------------------------
      // construct and configure components
      // ----------------------------------

      // create the slider

      slider = new JSlider(SwingConstants.HORIZONTAL, 0, 100, 50);

      // configure major and minor tick marks

      slider.setMajorTickSpacing(25);
      slider.setMinorTickSpacing(5);
      slider.setPaintTicks(true);
      slider.setPaintLabels(true);

      // create value field to display slider's current setting

      final int SIZE = 4;
      final Color LIGHT_GREY = new Color(225, 225, 225);
      sliderValue = new JTextField(SIZE);
      sliderValue.setEditable(false);
      sliderValue.setBackground(LIGHT_GREY);
      sliderValue.setHorizontalAlignment(SwingConstants.CENTER);

      // set initial value to slider's initial setting

      sliderValue.setText("" + slider.getValue());

      // -------------
      // add listeners
      // -------------

      slider.addChangeListener(this);

      // -----------------
      // layout components
      // -----------------

      // add components to panel

      JPanel panel = new JPanel();
      panel.add(new JLabel("Slider"));
      panel.add(slider);
      panel.add(sliderValue);
      panel.setBorder(new TitledBorder(new EtchedBorder(),
         "Slider demo (bare bones)"));

      // put in another panel -- just to add an empty border
      JPanel contentPane = new JPanel();
      contentPane.add(panel);
      contentPane.setBorder(BorderFactory.createEmptyBorder(30, 30, 30, 30));

      // make panel this JFrame's content pane

      this.setContentPane(contentPane);
   }

   // -------------------------------
   // implement ChangeListener method
   // -------------------------------

   public void stateChanged(ChangeEvent ce)
   {
      JSlider source = (JSlider)ce.getSource();

      // get the slider's current value
      int newValue = source.getValue();

      // print it!
      System.out.print(newValue + " ");

      // update the text field
      sliderValue.setText("" + newValue);
   }
}

