2013-04-23 48 views
0

我有一個類延伸JFrame。在其構造函數中,我呼叫getContentPane()並將其存儲在Container中。但是,getContentPane()似乎返回null,因爲System.out.println(container)打印出「null」並調用container.setLayout(new BorderLayout)將引發空指針異常。getContentPane()返回null

一些示例代碼:

public class Example extends JFrame implements ... { 
    public Example(){ 
     Container container = getContentPane(); 
     System.out.println(container); //prints "null" 
     container.setLayout(new BorderLayout()); //throws nullpointerexception 

此外,類本身(即this.setLayout())調用setLayout還拋出一個NullPointerException,但如果我理解正確的文檔,這是因爲在框架上調用它只是代表它到框架的contentPane。我使用Eclipse,並沒有指出任何警告或錯誤。這個異常不是很有用,因爲它只追溯到兩個級別(main(),其中該類實例化到setLayout()調用)。

如果有必要,我可以發佈我的整個代碼,但我不想這樣做,因爲這是爲了一個類的任務,我不想要反作弊軟件來標記它。

+3

是的,可能需要看到更多:P – MadProgrammer 2013-04-23 03:09:01

+2

*「我可以發佈我的整個代碼,如果有必要,」*而不是你的整個代碼,發佈[SSCCE](http://sscce.org)內容窗格。在提交完成的代碼時,相似程度會很小。 'public class Example extends JFrame implements ... {'..但這可能不是代碼應該**擴展JFrame **而不是簡單地使用一個實例的情況。 – 2013-04-23 03:33:09

+0

你在控制檯上遇到了follwing錯誤。 javax.swing.JPanel中[null.contentPane,0,0,0x0,無效,佈局= javax.swing.JRootPane中$ 1,alignmentX = 0.0,alignmentY = 0.0,邊界=,旗幟= 9,MAXIMUMSIZE =,=的minimumSize,首選大小= ] – chintan 2013-04-23 06:20:29

回答

1

發現問題。當我在Eclipse中創建這個類時,它自動生成了一堆方法,其中一個是getContentPane()。自動生成的方法只是返回null,這是我的問題。我擺脫了所有自動生成的方法,現在它可以工作。