JSlider

They don't exactly follow our widget pattern, they need ChangeListeners, which are a variant of ActionListeners. There are some extra lines for init too.

import javax.swing.*;
   import java.awt.*;
   import java.awt.event.*;
   import java.applet.Applet;
   import javax.swing.event.*; //new library
public class Slider extends Applet    implements ActionListener, ChangeListener //ChangeListener    is new
   {
   int r = 0; //to hold red's value
   
   public void init ()
   {
   JSlider red = new JSlider (JSlider.HORIZONTAL, 0, 255,    0);
   red.addChangeListener (this);
   red.setMajorTickSpacing (50);
   red.setMinorTickSpacing (25);
   red.setPaintTicks (true);
   red.setPaintLabels (true);
   add (red);
   }

   public void actionPerformed (ActionEvent e)
   {
 }

   /** Listen to the slider. */
   public void stateChanged (ChangeEvent e)
   {
   JSlider source = (JSlider) e.getSource ();
   if (!source.getValueIsAdjusting ())
   {
   r = (int) source.getValue ();
   showStatus (r + "");
   }
   }
   }