Java Swing GUI中的NullPointerException

Java Swing GUI中的NullPointerException

问题描述:

我在下面的代码中获得NullPointerException。代码的主要目的是在一个类中接受来自用户的输入,并将其传递给另一个类来构建GridLayoutJava 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(); 
    } 
} 
+5

打印和阅读栈TR高手。它会告诉你究竟是哪个.java源文件和行号在NPE被抛出的地方。这应该足以确定你做错了什么。您在使用之前未能初始化参考。 – duffymo 2012-04-18 02:38:07

+0

'B1'中的tf [] []'未被初始化 – mshsayem 2012-04-18 02:42:26

+2

请对代码块使用一致的逻辑缩进。 – 2012-04-18 04:03:50

B1类的构造函数,你需要newJTextField阵列(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