通常我会在 makeFrame 方法内实例化面板,但我需要使用 CreateButtonPanel() 和 createTextPanel() 这两个单独的方法。问题是,当它们不在自己的方法内部时,我无法弄清楚如何让 makeFrame 使用它们,并且当我习惯了 JavaScript 时,我所做的看起来应该可以工作,但事实并非如此。
最佳答案
从屏幕截图来看,您正在 createButtonPanel
中创建一个局部变量。方法使其对 add
不可用(空)容器的方法。
public void createButtonPanel()
{
JPanel buttonPanel = new JPanel();
}
相反,让它将新实例分配给类级别变量,以便在传递到 add
时它不会为空。容器的方法。
public void createButtonPanel()
{
this.buttonPanel = new JPanel(); // Now we are assigning to the class member
}
这应该可以解决您的问题。另外,建议您将其移至构造函数调用的初始化方法,并将其设为 private
因为制作它是没有用的 public
在这种情况下。
希望这有帮助。
关于java - BlueJ 调用公共(public)方法空指针异常(java.awt.container),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29803798/