2015-04-22 60 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

換言之,瑞恩,我認爲你沒有清楚地理解,這裏沒有什麼值得回報。 –