2016-11-27 228 views
0

我需要在學校創建一個簡單的掃雷遊戲。我想製作一個簡單易用的JButton-Array。但它不起作用!我就像搜索整個互聯網尋找解決方案一樣跌倒!你能幫助我嗎?下面的代碼:簡單按鈕陣列不起作用

public class Minesweeper extends Applet { 

    public void init() { 

     //Frameinitialiing 

     JFrame frame = new JFrame("Minesweeper"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     int width = 800; 
     frame.setSize(width, width); 
     frame.setResizable(false); 
     frame.setLocation(0,0); 
     frame.setVisible(true); 


     //Game 

     JPanel panel = new JPanel(); 
     panel.setLayout(null); 
     frame.add(panel); 


     //Buttons 

     int w = 80; 

     JButton[][] button = new JButton[10][10]; 
     for (int i = 1; i == 9 ; i++) { 

      for (int j = 1; j == 9 ; j++) { 

       button[i][j].setBounds(i*80 , j*80 , w , w); 
       this.add(button[i][j]); 

      } 
     } 
    } 
} 
+0

什麼不工作是什麼?你嘗試去解決呢? –

+0

我相信你會得到一個錯誤信息,哪個和你自己已經做了什麼(解決方法很簡單!) – brummfondel

回答

1

您的代碼有很多需要改變的地方。但我已經改變了它們:

JFrame frame = new JFrame("Minesweeper"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    int width = 800; 
    frame.setSize(width, width); 
    frame.setResizable(false); 
    frame.setLocation(0,0); 
    frame.setVisible(true); 

    int w = 80; 

    JButton[][] button = new JButton[10][10]; 
    for (int i = 0; i < 10 ; i++) { 

     for (int j = 0; j < 10 ; j++) { 
      button[i][j] = new JButton(); 
      button[i][j].setBounds(i*80 , j*80 , w , w); 
      frame.add(button[i][j]); 

     } 
    } 

首先,for循環是錯誤的。你似乎搞砸了數字。這兩個迴路應該都是= 0< 10。此外,我除去這三行:

JPanel panel = new JPanel(); 
    panel.setLayout(null); 
    frame.add(panel); 

你忘了初始化使用new JButton()的按鈕,所以我也給你。

最後,它是frame.add(button[i][j])而不是this.add(button[i][j])

它看起來像這樣:

enter image description here

+0

謝謝!但是,這是我現在看到的:https://postimg.org/image/v3fkocdiz/ - 當我走過他們的位置時出現按鈕.... – Peaq

+0

嗯......這很奇怪。不知何故,我沒有得到那種東西。也許這與JFrame佈局的內部工作有關。你可以隨時在網上搜索或提出另一個問題。我建議你不要使用座標。相反,使用awt提供的佈局之一,比如'FlowLayout'。 @Peaq – Sweeper

+0

謝謝,我只是調整了框架寬度,它的工作原理:D! – Peaq