Java Swing GUI中的NullPointerException

时间:2012-04-18 02:34:56

标签: java swing nullpointerexception

我在以下代码中获得NullPointerException。代码的主要目的是在一个类中从用户那里获取输入,并将其传递给另一个类来构造GridLayout

这是我第一堂课的代码......

public class A{
    int N;
    JLabel label;
    JPanel panel;
    JButton button;
    JFrame frame;
    JTextField text;

    public A(){
        frame=new JFrame();
        panel=new JPanel();
        text=new JTextField(20);
        label=new JLabel("Enter the number of states");
        button=new JButton("Submit");

        panel.add(label);
        panel.add(text);
        panel.add(button);
        frame.add(panel,BorderLayout.CENTER);

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae){
                N=Integer.parseInt(text.getText());
                B1 page=new B1(N);
                page.frame.setVisible(true);
            }
        });

        frame.setSize(320,240);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String arg[]){
        A ab=new A();
    }
}

这是我的第二堂课的代码......

public class B1 extends A {
    JFrame frame;
    JPanel pan;
    JButton button;
    double transition[][];
    JTextField tf[][];

    B1(int N){
        this.N=N;
        frame=new JFrame("Transition matrix");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pan=new JPanel();
        pan.setLayout(new GridLayout(N+1,N));

        for(int i=0; i<N; i++){
            for(int j=0; j<N; j++){
                tf[i][j]=new JTextField();
                pan.add(tf[i][j]);
            }
        }

        button=new JButton("Submit");
        pan.add(button);
        frame.add(pan);
        frame.pack();
    }
}

1 个答案:

答案 0 :(得分:4)

B1类的构造函数中,您需要new JTextField数组(tf),如:

...    
tf = new JTextField[N][N];
//code start
for(int i=0; i<N; i++)
{
    for(int j=0; j<N; j++)
    {
        tf[i][j]=new JTextField();
        pan.add(tf[i][j]);
    }
}
...