Я зробив просту функцію:
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
на панель, коли вона не була створена належним чином.