简体   繁体   中英

Exception in thread “main” java.lang.NullPointerException Error At Java

i am having a problem at a Java program, when i try to make an array of objects. Exception in thread "main" java.lang.NullPointerException Error is the error i get. i could really use some help, since i am stuck hours on this spot...

thanks for your help !

public class Placement extends JFrame  {
    private JPanel placementPanel;

    private JFrame gameEngineFrame;




    private Ship[] boardShips; //Array of ships objects to save ships
    private JButton[] shipButton; //Array of buttons for the ships
    private JLabel selectShipLabel;
    private Ship shipSelected;
    private Ship highlightedShip;





        JPanel shipSelect = new JPanel();
        shipSelect.setLayout(new GridLayout(14, 1));
        shipSelect.setBackground(Color.getHSBColor(0.0F, 0.0F, 0.75F)); //Setting background color. Hue, saturation, brightness format. (HSB)
        shipSelect.setBounds(320, 20, 200, 300); //Setting postiion of the panel inside the JPanel and setting width & height
        this.placementPanel.add(shipSelect);     



     makeShips(shipSelect);

  private void makeShips(JPanel inPanel)
  {
      System.out.println("make ships testing");
    this.shipButton[0] = new JButton("Aircraft Carrier");
    boardShips[0] = new Ship(5, "Aircraft Carrier", 0);

    this.shipButton[1] = new JButton("Battleship");
    boardShips[1] = new Ship(4, "Battleship", 1);

    this.shipButton[2] = new JButton("Cruiser");
  boardShips[2] = new Ship(3, "Cruiser", 2);

    this.shipButton[3] = new JButton("Destroyer 1");
    boardShips[3] = new Ship(2, "Destroyer", 3);


    this.shipButton[4] = new JButton("Submarine 1");
    boardShips[4] = new Ship(1, "Submarine", 4);

  System.out.println("make ships testing22");

    for (int i = 0; i < 5; i++)
    {
      this.shipButton[i].setName("" + i);
     this.shipButton[i].addActionListener((ActionListener) this);
      inPanel.add(this.shipButton[i]);
      this.boardShips[i].makeIcons();
    }

  }

AT SHIP CLASS:

  public Ship(int tempSize, String tempName, int tempButton)
  {
    this();
    this.size = tempSize;
    this.name = tempName;
    this.button = tempButton;
   // this.shipCoords = new int[this.size][2];
    //this.shipIcons = new ImageIcon[2][this.size];
    //this.shipSunkIcons = new ImageIcon[2][this.size];
  }

YOu have this private JButton[] shipButton; which is array of Jbutton not initialized anywhere and you are trying to do this.shipButton[0] = new JButton("Aircraft Carrier"); causin NPE.

I see you have 5 shipButton array

  JButton[] shipButton=new JButton[5];

EDIT

You can not call method from class body. You can only defined the method there. To call your method you have to use either constructor or through some other method.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM