Reputation: 1501
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];
}
Upvotes: 0
Views: 3383
Reputation: 4715
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.
Upvotes: 2