2012-04-18 150 views
0

我在下面的代碼中獲得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

回答

4

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