NullPointerExecption - java, swing, jpanel

Я зробив просту функцію:

public class AjouterBouton {

public AjouterBouton(int nombre) {

JButton[] buttons = new JButton[nombre];

for(int i = 0; i < buttons.length; i++) {

buttons[i] = new JButton();
buttons[i].setBackground(Color.LIGHT_GRAY);
JPanel pan = Main.grille;
pan.add(buttons[i]);
}
}
}

"grille" - це простий JPanel у моєму головному класі:

JPanel grille = new JPanel();
int ligne = 6;
int colone = 5;
grille.setBounds(6, 117, 980, 314);
grille.setLayout(new GridLayout(ligne,colone));

і, нарешті, я додав це до головного класу:

new AjouterBouton(72);

Однак, я отримую JavaNullPointerException.

PS: Я спробував це, що працює:

final JButton[] buttons = new JButton[72];

for(int i = 0; i < buttons.length; i++) {

buttons[i] = new JButton();
buttons[i].setBackground(Color.LIGHT_GRAY);
grille.add(buttons[i]);
}

Але я хочу додати свою кнопку за допомогою цього методу. Я новачок, хтось може мені допомогти?

Відповіді:

1 для відповіді № 1

Передайте посилання на JPanel вашому методу конструктора:

public AjouterBouton(int nombre, JPanel pan)
{
JButton[] buttons = new JButton[nombre];

for(int i = 0; i < buttons.length; i++)
{
buttons[i] = new JButton();
buttons[i].setBackground(Color.LIGHT_GRAY);
//JPanel pan = Main.grille;
pan.add(buttons[i]);
}
}

У головному:

int ligne = 6;
int colone = 5;

JPanel grille = new JPanel();
grille.setBounds(6, 117, 980, 314);
grille.setLayout(new GridLayout(ligne,colone));
// this could be just a static method call: AddButtonsToPanel()
// doesn"t need to be an object
AjouterBouton button = new AjouterBouton(72, grille);

0 для відповіді № 2
JPanel pan = Main.grille;

Ця лінія коду називається в межах for петля в AjouterBouton метод. Вона утилізується, коли існує метод.

Не бачачи сліду стека, я повинен вийти на кінцівку і сказати, що ви отримуєте NullPointerException тому що ви намагаєтеся додати pan на панель, коли вона не була створена належним чином.