2013-12-16 53 views
1

我對Java比較陌生,我正在嘗試爲學校做一個任務。在我的任務中,我應該製作一個GUI程序,使8×8的紅色和黑色彩色棋盤。唯一的問題(到目前爲止),我正在初始化一個JPanels的二維數組。使用for循環初始化二維JPanel陣列

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7 

,直到我嘗試運行代碼這不會給一個錯誤:我使用日食時收到此錯誤。它說的錯誤是在這個身體發生的for循環:

JPanel[][] panel = new JPanel[7][7]; 

for (int i = 0; i <= panel.length; i++){ 
panel[i][0] = new JPanel(); 
panel[i][1] = new JPanel(); 
panel[i][2] = new JPanel(); 
panel[i][3] = new JPanel(); 
panel[i][4] = new JPanel(); 
panel[i][5] = new JPanel(); 
panel[i][6] = new JPanel(); 
panel[i][7] = new JPanel(); 
} 

這不工作,如果我不使用for循環,但我真的不希望把64個不同的言論並做這個。我再次檢查和panel.length 確實給出的值7(這是我想要的),並沒有工作,即使當我身體投入7.我沒有任何語法錯誤是我的代碼,但我仍然得到錯誤。有沒有其他方式我應該這樣做呢?提前致謝。記得我是新手。

+2

更改'我<= panel.length'到'我 PakkuDon

+0

我是新來的,我應該知道什麼是嵌套循環,但我不,如果我使用'我 retep686

回答

1

三件事:

  1. 一個棋盤是8 × 8,所以你真的想panel.length爲8,不是嗎?
  2. 標準for迴路使用<進行測試,而不是<=
  3. 如果使用兩個嵌套的循環,則不需要重複new JPanel() 8次。

結果:

JPanel[][] panel = new JPanel[8][8]; 

for (int i = 0; i < panel.length; i++) { 
    for (int j = 0; j < panel[i].length; j++) { 
     panel[i][j] = new JPanel(); 
    } 
} 
+0

謝謝!效果很好。我利用你的想法來完成它。 – retep686

2

「做一個GUI程序,由8個紅色和黑色的方格使得8唯一的問題(到目前爲止),我遇到的初始化。 JPanels的二維數組「。

如果你需要做的是使板,沒有其他條件,爲什麼不直接使用GridLayout

JPanel mainPanel = new JPanel(new GridLayout(8, 8)); 

for (int i = 0; i < 64; i++){ 
    JPanel panel = new JPanel(); 
    // alternate background colors with a predefined boolean and an if 
    mainPanel.add(panel); 
}