我不想问这个,但是我得到了一个带有两个全局变量的 NullPointerExceptionweakAcid
和weakBase
,即使我在构造函数中清楚地初始化了这些变量。我的代码在下面,错误在 addComponents() 方法中,并且是确切的 line panel.add(weakAcid, c)
。调试的时候发现两个字段都初始化失败。也许有帮助?
堆栈跟踪:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at gametype.AcidBaseGame.addComponents(AcidBaseGame.java:112)
at gametype.Game.<init>(Game.java:55)
at gametype.SolubilityGame.<init>(SolubilityGame.java:17)
at gametype.AcidBaseGame.<init>(AcidBaseGame.java:25)
at gui.GameFrame.actionPerformed(GameFrame.java:132)
public class AcidBaseGame extends SolubilityGame
{
private JButton weakAcid;
private JButton weakBase;
private int buttonIndex;
public AcidBaseGame()
{
/* hidden code to save space */
weakAcid = new JButton("Weak Acid");
weakBase = new JButton("Weak Base");
endDisplay = new JLabel();
//actionlisteners to buttons
choice1.addActionListener(this);
choice2.addActionListener(this);
weakAcid.addActionListener(this);
weakBase.addActionListener(this);
this.addComponents();
}
private void setChemical()
{
//hidden code
}
public void addComponents()
{
GridBagConstraints c = new GridBagConstraints();
//initializes fine
c.fill = GridBagConstraints.CENTER;
c.gridx = 1;
c.gridy = 0;
panel.add(chemicalLabel, c);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 1;
panel.add(choice1, c);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 2;
c.gridy = 1;
panel.add(choice2, c);
//error
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 2;
panel.add(weakAcid, c);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 2;
c.gridy = 2;
panel.add(weakBase, c);
c.fill = GridBagConstraints.CENTER;
c.gridx = 1;
c.gridy = 3;
panel.add(endDisplay, c);
}
public void determineCorrect()
{
//hidden code
}
public void actionPerformed(ActionEvent arg0)
{
//hidden code
}
}