2015-04-22 59 views
0

通常我会在makeFrame方法内实例化面板,但是我需要使用CreateButtonPanel()和createTextPanel()两个单独的方法。问题是,我不能解决如何让makeFrame在它们不在自己的方法中时使用它们,而当我习惯了JavaScript时,我所做的事情看起来应该可行,但事实并非如此。BlueJ调用公共方法空指针异常(java.awt.container)

enter image description here

+2

请包含足够的源代码来生成[最小,完整,可验证示例](http://stackoverflow.com/help/mcve),而不是链接屏幕截图。 –

+0

同时发布你正在获取的堆栈跟踪。 –

回答

2

从截图,你在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

希望这会有所帮助。

+0

啊!谢谢你,这很有道理。我之前曾使用(this。)作为将值返回给我的代码顶部声明的对象的一种方式,但不认为它会将它返回给用于其他调用者的方法。 –

+0

换言之,瑞恩,我认为你没有清楚地理解,这里没有什么值得回报。 –