Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用循环在JPanel中添加JButton(for)?_Java_Swing_Loops_Jpanel_Jbutton - Fatal编程技术网

Java 使用循环在JPanel中添加JButton(for)?

Java 使用循环在JPanel中添加JButton(for)?,java,swing,loops,jpanel,jbutton,Java,Swing,Loops,Jpanel,Jbutton,我正在尝试制作一个战舰游戏,但在使用循环时,我没有成功地在JPanel中添加JButtons。我可以一个接一个地添加它,但不能在for循环中添加 我没有得到任何错误,只有在编译时 "Exception in thread "main" java.lang.NullPointerException at Allo.<init>(Allo.java:38) at Allo.main(Allo.java:55)" 线程“main”中的异常java.lang.NullPointerExce

我正在尝试制作一个战舰游戏,但在使用循环时,我没有成功地在
JPanel
中添加
JButton
s。我可以一个接一个地添加它,但不能在
for
循环中添加

我没有得到任何错误,只有在编译时

"Exception in thread "main" java.lang.NullPointerException
at Allo.<init>(Allo.java:38)
at Allo.main(Allo.java:55)"
线程“main”中的异常java.lang.NullPointerException 在Allo.(Allo.java:38) 在Allo.main(Allo.java:55)” 代码如下:

import javax.swing.JFrame;
import java.awt.GridLayout;
import javax.swing.JPanel;
import javax.swing.SpringLayout;
import java.awt.Color;
import javax.swing.JButton;  

public class Allo {    

  JFrame fenetre = new JFrame();
  static JButton[][] bouton; 

  public Allo(int width, int height) {    
     fenetre.setSize(800, 500);
     fenetre.setResizable(false);
     SpringLayout springLayout = new SpringLayout();
     fenetre.getContentPane().setLayout(springLayout);    
     JPanel panel = new JPanel();
     panel.setBackground(Color.DARK_GRAY);    
     fenetre.getContentPane().add(panel);
     SpringLayout sl_panel = new SpringLayout();
     panel.setLayout(sl_panel);
     for (int r = 0; r < 16; r++)
     {
        for (int c = 0; c < 8; c++)
        {    
           bouton[r][c] = new JButton("("+r+","+c+")");   
           panel.add(bouton[r][c]);    
           //fenetre.getContentPane().add(bouton[r][c]);
        }
     }
     fenetre.setVisible(true);
   }    

    public static void main(String[] args) {
    // TODO Auto-generated method stub
       new Allo(16,8);   
   }
}
import javax.swing.JFrame;
导入java.awt.GridLayout;
导入javax.swing.JPanel;
导入javax.swing.SpringLayout;
导入java.awt.Color;
导入javax.swing.JButton;
公共类Allo{
JFrame fenetre=新的JFrame();
静态JButton[][]bouton;
公共Allo(整数宽度,整数高度){
fenetre.设置尺寸(800500);
fenetre.可设置大小(假);
SpringLayout SpringLayout=新的SpringLayout();
fenetre.getContentPane().setLayout(springLayout);
JPanel面板=新的JPanel();
面板.立根背景(颜色:深灰色);
fenetre.getContentPane().add(面板);
SpringLayout sl_面板=新建SpringLayout();
面板。设置布局(sl_面板);
对于(int r=0;r<16;r++)
{
对于(int c=0;c<8;c++)
{    
bouton[r][c]=新的JButton(“(“+r+”,“+c+”));
小组.增补(bouton[r][c]);
//fenetre.getContentPane().add(bouton[r][c]);
}
}
设置可见(真);
}    
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
新Allo(16,8);
}
}

您尚未初始化按钮数组,因此以下行引发异常:

bouton[r][c] = new JButton("("+r+","+c+")");  
您的代码缺少以下行:

bouton = new JButton[16][8];

我真不敢相信,陛下真是太仁慈了+1