我在以下代码中获得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();
}
}
答案 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]);
}
}
...