2016-11-27 141 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