0

I am trying to get my GUI layout to work. I can assure that I did everything right, until I kept getting this error:

Exception in thread "main" java.lang.NullPointerException
    at java.awt.Container.addImpl(Container.java:1097)
    at java.awt.Container.add(Container.java:417)
    at Calculator$ButtonPanel.<init>(Calculator.java:33)
    at Calculator.<init>(Calculator.java:23)
    at Calculator.main(Calculator.java:42)

I have literally tried everything and it's still giving me that error. I did similar code like the one below and I never had this problem, which is strange. Here is my code:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class Calculator extends JPanel implements ActionListener {
    JButton buttons[];
    JTextField displayarea;
    JFrame fr;
    Calculator() {
        fr = new JFrame("Calculator");
        fr.setLocationRelativeTo(null);
        fr.setDefaultCloseOperation(3);
        displayarea = new JTextField("0");
        displayarea.setHorizontalAlignment(SwingConstants.RIGHT);
        displayarea.setEditable(false);
        fr.add(displayarea, BorderLayout.NORTH);
        fr.add(new ButtonPanel(), BorderLayout.SOUTH);
        fr.pack();
        fr.setVisible(true);
    }

    class ButtonPanel extends JPanel {
        ButtonPanel() {
            setLayout(new java.awt.GridLayout(4, 4));
            buttons = new JButton[16];
            for (int i = 0; i < buttons.length; i++)
                add(buttons[i]);
        }
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub

    }

    public static void main(String[] args) {new Calculator();}

}

Any suggestions?

javanewb1
  • 33
  • 5
  • what is the line that actually throws the exception? – Stultuske Jun 10 '20 at 06:18
  • 1
    `buttons = new JButton[16];` that doesn't create any JButtons, that creates an array full of nulls, ready to hold JButtons. `add(buttons[i]);` will fail. Maybe first. `buttons[i]=new JButton();` – matt Jun 10 '20 at 06:20
  • @Stultuske the one where I added the buttonPanel, the JButtons, and when I declare a new Calculator object. – javanewb1 Jun 10 '20 at 07:13
  • as matt already told you, you are trying to add null values as buttons, there's your issue. instantiate your buttons or don't add them – Stultuske Jun 10 '20 at 07:15
  • I solved this a few days ago by initializing them, but thanks for the help everyone – javanewb1 Jun 12 '20 at 19:32

0 Answers0