原代码:
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...请问是哪的问题呀??
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...请问是哪的问题呀??
textField = new JTextField();