Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing GUI中的NullPointerException_Java_Swing_Nullpointerexception - Fatal编程技术网

Java Swing GUI中的NullPointerException

Java Swing GUI中的NullPointerException,java,swing,nullpointerexception,Java,Swing,Nullpointerexception,我在下面的代码中得到一个NullPointerException。代码的主要目的是在一个类中获取用户的输入,并将其传递给另一个类以构建GridLayout 这是我第一节课的代码 public class A{ int N; JLabel label; JPanel panel; JButton button; JFrame frame; JTextField text; public A(){ frame=new JFra

我在下面的代码中得到一个
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();
    }
}
公共类B1扩展了{
JFrame框架;
潘杰潘;
按钮;
双过渡[];
JTextField[][];
B1(内部网络){
这个,N=N;
frame=新JFrame(“转换矩阵”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pan=新的JPanel();
平移设置布局(新网格布局(N+1,N));

对于
B1
类的构造函数中的(int i=0;i,您需要
new
您的
JTextField
数组(
tf
),如下所示:

。。。
tf=新的JTextField[N][N];
//代码开始

对于
B1
类的构造函数中的(int i=0;i,您需要
new
您的
JTextField
数组(
tf
),如下所示:

。。。
tf=新的JTextField[N][N];
//代码开始

for(int i=0;i打印并读取堆栈跟踪。它准确地告诉您NPE抛出的.java源文件和行号。这应该足以找出您做错了什么。您在使用引用之前未能初始化它。
tf[]
B1
中的
未初始化请对代码块使用一致的逻辑缩进。打印并读取堆栈跟踪。它会准确地告诉您NPE抛出的.java源文件和行号。这应该足以找出您做错了什么。您在使用引用之前未能初始化它。
tf[]
B1
中的
未初始化请对代码块使用一致的逻辑缩进。非常感谢!!!这很有帮助。我尝试了GridLayout的所有可能组合,认为这就是问题所在。谢谢!非常感谢!!!这很有帮助。我尝试了GridLayout的所有可能组合我想这就是问题所在。谢谢!
...    
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]);
    }
}
...