2013-07-27 112 views
0
public game() 
{ 
    setTitle("game"); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setResizable(false); 
    setLayout(new BorderLayout()); 
    buildMenu(); 
    setJMenuBar(menuBar); 
    buildGreetingsPanel(); 
    add(greetingsPanel, BorderLayout.NORTH); 
    buildGamePanel(); 
    add(gamePanel, BorderLayout.CENTER); 
    buildStatusPanel(); 
    add(statusPanel, BorderLayout.SOUTH); 
    buildSettingsPanel(); 
    add(settingsPanel); 
    pack(); 
    setVisible(true); 
} 

[...............] 

private void buildGamePanel() 
{ 
    gamePanel = new JPanel(); 
    gamePanel.setBorder(BorderFactory.createLineBorder(difficultyColor)); 
    gamePanel.setPreferredSize(new Dimension(9 * span, 9 * span)); 
    gamePanel.setLayout(new GridLayout(40, 40, 0, 0)); 

    for(col = 0; col < gameWidth; col++) 
    { 
     for(row = 0; row < gameHeight; row++) 
     { 
      buttons[col][row] = new JButton(); 
      buttons[col][row].setBounds(4, 4, span, span); 
      buttons[col][row].addMouseListener(new mouseListener()); 
      gamePanel.add(buttons[col][row]); 
     } 
    } 
} 

正如標題所示。
我加了buildGamePanel();add(gamePanel, BorderLayout.CENTER); 已經。有什麼問題?謝謝無法將JButtons數組添加到JPanel

編輯:由於沒有人回答,這個問題可能在其他地方。 我加了公共遊戲();構造函數作爲錯誤的可能來源。

+0

你得到什麼錯誤? –

+0

完全沒有錯誤。按鈕只是不顯示。 –

+0

據我所知,缺陷在於這行'buttons [col] [row] .setBounds(4,4,span,span);',因爲每個用作該方法參數的值在整個生命期間保持不變循環的循環。因此,所有。按鈕將出現在同一個地方,一個在另一個之上。 –

回答

0

問題出在BorderLayout();

編譯時,settingsPanel被添加到gamePanel之前的GUI中心。 忘記指定它應該放置如下:

add(settingsPanel, BorderLayout.EAST);