2013-04-05 40 views
0

想不通爲什麼我收到此異常,控制檯返回此消息:NullPointerException異常,試圖JPanel的陣列放入容器

public static void main(String [] args){ 
JFrame b = new JFrame("Lotus"); 
Container pieces = new Container(); 
JLabel[] labelsP1 = new JLabel[10]; 
JLabel[] labelsP2 = new JLabel[10]; 

for(int i = 0 ; i < labelsP1.length ; i++){ 
    labelsP1[i] = new JLabel(B1); 
    for(int j = 0 ; j < labelsP2.length ; j++){ 
     labelsP2[j] = new JLabel(B2); 
    } 
    for (JLabel label : labelsP1) { 
     pieces.add(label); 
    } 

    Container c = b.getContentPane(); 
    c.setLayout(new GridLayout(13,3)); 
    c.add(pieces); 
} 
+0

哪一行是100行? – 2013-04-05 18:33:07

+2

我已經重新格式化了您的代碼 - 如果您將來在發佈問題時可以很好地格式化您的代碼,它將*非常有用。請閱讀http://tinyurl.com/so-hints。另外,你還沒有告訴我們任何關於「件」的事情。 – 2013-04-05 18:35:22

+0

「pieces」變量的聲明在哪裏? – pepuch 2013-04-05 18:36:19

回答

3

您的第三內環是迭代扔一個空陣列

for (JLabel label : labelsP1) { 
     pieces.add(label); 
    } 

//

for(int i = 0 ; i < labelsP1.length ; i++) 
{ 
    labelsP1[i] = new JLabel(B1); 
    for(int j = 0 ; j < labelsP2.length ; j++) 
    { 
     labelsP2[j] = new JLabel(B2); 
    } 
    for (JLabel label : labelsP1) // null only labelsP1[0] is initialized 
    { 
     pieces.add(label);   
    } 

    Container c = b.getContentPane(); 
    c.setLayout(new GridLayout(13,3)); 
    c.add(pieces); 
} 
+0

由於labelsP1填充到i。另外'for i'和'for j'的嵌套表明一個'new JLabel []'應該在第一個'for i'內部發生。 – 2013-04-05 18:39:11

+0

檢查Deadron評論,它看起來像你的代碼缺少一個括號。 – 2013-04-05 18:46:49

2

對於初學者來說它看起來並不像你向我們展示所有的代碼哪些事情困難。 其次,它的意圖是你的第一個for循環包含了所有後面的代碼?看起來您可能有托架錯位問題。我猜你需要一個右大括號。

for(int i = 0 ; i < labelsP1.length ; i++){ 
     labelsP1[i] = new JLabel(B1); 
     for(int j = 0 ; j < labelsP2.length ; j++){ 
      labelsP2[j] = new JLabel(B2); 
    } 

for(int i = 0 ; i < labelsP1.length ; i++) { 
    labelsP1[i] = new JLabel(B1); 
} 

for(int j = 0 ; j < labelsP2.length ; j++) { 
    labelsP2[j] = new JLabel(B2); 
} 
0

在下面thie代碼:

for(int i = 0 ; i < labelsP1.length ; i++){ 
labelsP1[i] = new JLabel(B1); 
for(int j = 0 ; j < labelsP2.length ; j++){ 
    labelsP2[j] = new JLabel(B2); 
} 
for (JLabel label : labelsP1) { 
    pieces.add(label); 
} 

你被一個加入的JLabel到陣列labelsP1之一,也是迭代陣列上。但是你試圖訪問它不存在的所有元素。

我建議你刪除嵌套for循環以獲得正確的行爲並避免NullPointerException。

相關問題