Java Swing GUI中的NullPointerException
问题描述:
我在下面的代码中获得NullPointerException
。代码的主要目的是在一个类中接受来自用户的输入,并将其传递给另一个类来构建GridLayout
。Java Swing GUI中的NullPointerException
这里是我的第一个类的代码...
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
类的构造函数,你需要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]);
}
}
...
+0
非常感谢你!这有帮助。我正在尝试所有可能的与GridLayout的组合,认为这是问题所在。谢谢! – 2012-04-21 02:11:35
打印和阅读栈TR高手。它会告诉你究竟是哪个.java源文件和行号在NPE被抛出的地方。这应该足以确定你做错了什么。您在使用之前未能初始化参考。 – duffymo 2012-04-18 02:38:07
'B1'中的tf [] []'未被初始化 – mshsayem 2012-04-18 02:42:26
请对代码块使用一致的逻辑缩进。 – 2012-04-18 04:03:50