0

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];
  }
0

1 Answer 1

2

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.

Sign up to request clarification or add additional context in comments.

1 Comment

So you get this error when something is not intialized ? I fixed the error i asked but i get a new NPE at makeShips(shipSelect); Command

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.