import java.awt.event.*;
import java.awt.*;
import javax.swing.*;public class Mylayout extends JFrame implements ActionListener {


CardLayout clt=new CardLayout(20,30);
JLabel jl1=new JLabel("姓名");
JLabel jl2=new JLabel("性别");
JButton jb1=new JButton("进入页面2"),jb2=new JButton("进入页面1");
JTextField jname,jsex;
JPanel jp1=new JPanel(),jp2=new JPanel();
Mylayout(){
this.getContentPane().setLayout(clt);
jp1.add(jl1);
jp1.add(jname);
jp1.add(jb1);
jp2.add(jl2);
jp2.add(jsex);
jp2.add(jb2);
this.getContentPane().add("1",jp1);
this.getContentPane().add("2",jp2);
jb1.addActionListener(this);
jb2.addActionListener(this);
this.getContentPane().setVisible(true);

}

public static void main(String args[]) 

new Mylayout();      //34
} public void actionPerformed(ActionEvent e) 
{
if(e.getSource()==jb1)
clt.next(this.getContentPane());

else clt.first(this.getContentPane());
}}
Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1019)
at java.awt.Container.add(Container.java:351)
at Mylayout.<init>(Mylayout.java:17)
at Mylayout.main(Mylayout.java:34)

解决方案 »

  1.   

    JTextField jname,jsex;未初始化就被
     
    jp1.add(jname);
    jp2.add(jl2);
    jp2.add(jsex);
    ...   ...
      

  2.   

    import java.awt.event.*;
    import java.awt.*;
    import javax.swing.*;class Mylayout extends JFrame implements ActionListener {


    CardLayout clt=new CardLayout(20,30);
    JLabel jl1=new JLabel("姓名");
    JLabel jl2=new JLabel("性别");
    JButton jb1=new JButton("进入页面2"),jb2=new JButton("进入页面1");
    JTextField jname,jsex; JPanel jp1=new JPanel(),jp2=new JPanel();
    Mylayout(){
    this.getContentPane().setLayout(clt);
    jname=new JTextField(45);
    jsex=new JTextField(5);
    jp1.add(jl1);
    jp1.add(jname);
    jp1.add(jb1);
    jp2.add(jl2);
    jp2.add(jsex);
    jp2.add(jb2);
    this.getContentPane().add("1",jp1);
    this.getContentPane().add("2",jp2);
    jb1.addActionListener(this);
    jb2.addActionListener(this);
    this.getContentPane().setVisible(true);

    }

    public void actionPerformed(ActionEvent e) 
    {
    if(e.getSource()==jb1)
    clt.next(this.getContentPane());

    else clt.first(this.getContentPane());
    }}public class testfram
    {
    public static void main(String args[]) 

    new Mylayout();      //34
    }
    }