我做了一个简单的功能:
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));
最后,我将其添加到Main类中:
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]);
}
但是我想用这个方法添加我的按钮。我是初学者;有人能帮我吗?
答案 0 :(得分: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]);
}
}
在Main:
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);
答案 1 :(得分:0)
JPanel pan = Main.grille;
在for
方法的AjouterBouton
循环中调用该行代码。当方法存在时将其丢弃。
在没有看到堆栈跟踪的情况下,我不得不站出来说你得到的是NullPointerException
因为你试图在你的面板上添加pan
已经正确实例化了。