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?
