原代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import javax.swing.event.*;
import java.lang.NullPointerException;public class SliderTest
{
public static void main(String args[])
{
SliderFrame frame=new SliderFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}class SliderFrame extends JFrame
{
public SliderFrame()
{
setTitle("SliderTest");
    setSize(DEFAULT_WIDTH,this.DEFAULT_HEIGTH);
    
    sliderPanel=new JPanel();
    sliderPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    
    listener=new ChangeListener()
    {
     public void stateChanged(ChangeEvent event)
     {
     //update text field when the slider value changes
     JSlider source=(JSlider)event.getSource();
     textField.setText(""+source.getValue());
     }
    };
    
    //add a plain slider
    
    JSlider slider=new JSlider();
    addSlider(slider,"Plain");
    
    //add a slider with major and minor ticks
    slider=new JSlider();
    slider.setPaintTicks(true);
    slider.setMajorTickSpacing(20);
    slider.setMinorTickSpacing(5);
    addSlider(slider,"Ticks");
    
    //add a slider that snaps to ticks
    slider=new JSlider();
    slider.setPaintTicks(true);
    slider.setSnapToTicks(true);
    slider.setMajorTickSpacing(20);
    slider.setMinorTickSpacing(5);
    addSlider(slider,"Snap to ticks");
    
    //add a filled slider
    slider=new JSlider();
    slider.setPaintTicks(true);
    slider.setMajorTickSpacing(20);
    slider.setMinorTickSpacing(5);
    slider.putClientProperty("JSlider.isFilled",Boolean.TRUE);
    addSlider(slider,"Filled");
    
    //add a filled and inverted slider
    slider=new JSlider();
    slider.setPaintTicks(true);
    slider.setMajorTickSpacing(20);
    slider.setMinorTickSpacing(5);
    slider.putClientProperty("JSlider.isFilled",Boolean.TRUE);
    slider.setInverted(true);
    addSlider(slider,"Inverted");
    
    //add a slider with numeric labels
    slider.setPaintTicks(true);
    slider.setPaintLabels(true);
    slider.setMajorTickSpacing(20);
    slider.setMinorTickSpacing(5);
    addSlider(slider,"Labels");
    
    //add a slider with alphabbetic labels
    slider.setPaintTicks(true);
    slider.setPaintLabels(true);
    slider.setMajorTickSpacing(20);
    slider.setMinorTickSpacing(5);
    
    Hashtable labelTable=new Hashtable();
    labelTable.put(new Integer(0),new JLabel("A"));
    labelTable.put(new Integer(20),new JLabel("B"));
    labelTable.put(new Integer(40),new JLabel("C"));
    labelTable.put(new Integer(60),new JLabel("D"));
    labelTable.put(new Integer(80),new JLabel("E"));
    labelTable.put(new Integer(100),new JLabel("F"));
    
    slider.setLabelTable(labelTable);
    addSlider(slider,"Custom Labels");
    
    //add a slider with icon labels
    slider.setPaintTicks(true);
    slider.setPaintLabels(true);
    slider.setSnapToTicks(true);
    slider.setMajorTickSpacing(20);
    slider.setMinorTickSpacing(20);
    
    labelTable=new Hashtable();
    
    //add card images
    labelTable.put(new Integer(0),new JLabel(new ImageIcon("nine.gif")));
    labelTable.put(new Integer(20),new JLabel(new ImageIcon("ten.gif")));
    labelTable.put(new Integer(40),new JLabel(new ImageIcon("jack.gif")));
    labelTable.put(new Integer(60),new JLabel(new ImageIcon("queen.gif")));
    labelTable.put(new Integer(80),new JLabel(new ImageIcon("king.gif")));
    labelTable.put(new Integer(100),new JLabel(new ImageIcon("ace.gif")));
    
    slider.setLabelTable(labelTable);
    addSlider(slider,"Icon labels");
    
    //add the textField taht displays the slider value
    textField=new JTextField();
    Container contentPane=getContentPane();
    contentPane.add(sliderPanel,BorderLayout.CENTER);
    contentPane.add(textField,BorderLayout.SOUTH);
}
public void addSlider(JSlider s,String description)
{
s.addChangeListener(listener);
JPanel panel=new JPanel();
panel.add(s);
panel.add(new JLabel(description));
sliderPanel.add(panel);
}
public static final int DEFAULT_WIDTH=600;
public static final int DEFAULT_HEIGTH=300;

private JPanel sliderPanel;
private JTextField textField;
private ChangeListener listener;
} 问题:
Exception in thread "main" java.lang.NullPointerException
        at SliderFrame$1.stateChanged(SliderTest.java:34)
        at javax.swing.JSlider.fireStateChanged(JSlider.java:341)
        at javax.swing.JSlider$ModelListener.stateChanged(JSlider.java:269)
        at javax.swing.DefaultBoundedRangeModel.fireStateChanged(DefaultBoundedR
angeModel.java:346)
        at javax.swing.DefaultBoundedRangeModel.setRangeProperties(DefaultBounde
dRangeModel.java:283)
        at javax.swing.DefaultBoundedRangeModel.setValue(DefaultBoundedRangeMode
l.java:149)
        at javax.swing.JSlider.setValue(JSlider.java:419)
        at javax.swing.plaf.basic.BasicSliderUI.calculateThumbLocation(BasicSlid
erUI.java:402)
        at javax.swing.plaf.basic.BasicSliderUI.calculateGeometry(BasicSliderUI.
java:356)
        at javax.swing.plaf.basic.BasicSliderUI$PropertyChangeHandler.propertyCh
ange(BasicSliderUI.java:584)
        at javax.swing.plaf.metal.MetalSliderUI$MetalPropertyListener.propertyCh
ange(MetalSliderUI.java:95)
        at javax.swing.event.SwingPropertyChangeSupport.firePropertyChange(Swing
PropertyChangeSupport.java:264)
        at javax.swing.event.SwingPropertyChangeSupport.firePropertyChange(Swing
PropertyChangeSupport.java:232)
        at javax.swing.JComponent.firePropertyChange(JComponent.java:3893)
        at javax.swing.JSlider.setMinorTickSpacing(JSlider.java:878)
        at SliderFrame.<init>(SliderTest.java:104)
        at SliderTest.main(SliderTest.java:12)
Press any key to continue...请问是哪的问题呀??