2012-07-22 52 views
-2

下面的代碼「BoxLayout的例子符合很好,但我拋出以下異常在運行時:請幫我弄清楚這個java.awt.BoxLayout不能共享或NullPointerException異常

Exception in thread "main" java.lang.NullPointerException 

at java.awt.Container.addImpl(Container.java: 1027) 
at java.awt.Container.add(Container.java: 935) 
at javax.swing.JFrame.addImpl(JFrame.java: 545) 
at java.awt.Container.add(Container.java: 352) 
at BoxExample.launchFrame(BoxExample.java:26) 
at BoxExample.main(BoxExample.java:40) 

請幫我理清這個,因爲它浪費了近1一天,我的生活..

//Boxlayout example 

import java.awt.*; 

import javax.swing.*; 

public class BoxExample 
{ 

public JFrame f; 

public JButton b1, b2,b3,b4,b5; 

public BoxExample() 

{ 

f=new JFrame("Box example"); 

f.setTitle("Box Layout Example"); 

f.setSize(150, 150); 

JButton b1=new JButton("Button 1"); 

JButton b2=new JButton("Button 2"); 

JButton b3=new JButton("Button 3"); 

JButton b4=new JButton("Button 4"); 

JButton b5=new JButton("Button 5"); 

} 


public void launchFrame() 

{ 

System.out.println("inside lf"); 

f.setLayout(new BoxLayout(f,BoxLayout.Y_AXIS)); 

System.out.println("after layset"); 

f.add(b1); 

f.add(b2); 

f.add(b3); 

f.add(b4); 

f.add(b5); 

f.pack(); 

f.setVisible(true); 

} 


public static void main(String args[]) 

{ 

BoxExample guiWindow=new BoxExample(); 

System.out.println("main"); 

guiWindow.launchFrame(); 

} 

} 

回答

1

你遮蔽了一些變數,主要是將JButton變量B1,B2,B3,B4和B5,通過在課堂上宣佈他們,然後重新聲明並初始化它們構造函數。構造函數中新聲明的變量與在類中聲明的變量不同,因此類變量將保留爲空。

解決方案:不要在構造函數中重新聲明變量。因此,而不是這樣的:

class Foo { 
    private Bar bar; 

    public Foo() { 
    Bar bar = new Bar(); // bar is re-declared here! 
    } 
} 

做到這一點:

class Foo { 
    private Bar bar; 

    public Foo() { 
    bar = new Bar(); // notice the difference! 
    } 
} 

而且,只要你有一個NullPointerException(NPE)在拋出異常,這裏的BoxExample班線26線仔細看看:

at BoxExample.launchFrame(BoxExample.java:26) 

您會在該行發現其中一個變量爲空。如果你發現哪個變量,你可以經常回溯你的代碼,看看它爲什麼是空的。

+0

感謝您的輸入,但如果我刪除所有重新聲明(刪除構造函數中的JButton關鍵字)獲取java.awt.AWTError的運行時錯誤:BoxLayout無法在... checkContainer ... invalidateLayout ... addLayoutComponent ... addImpl ...和所有這些東西..你可以請更正嗎? – 2012-07-22 03:00:56

+0

@ user1543439:嗯,這沒有意義。考慮編輯上面的帖子,並在當前的代碼下面添加新的導致錯誤的嘗試。如果你這樣做,請只發布格式良好的代碼。你目前的代碼都是左對齊的,這使得那些不熟悉它的人(我們!)很難閱讀和理解它。 – 2012-07-22 03:04:03

+0

哦,非常感謝兄弟..我編輯了這個,並做了一個新帖子,題爲「Boxlayout不能共享AWTError ...正在恢復我以前的任務,它有Nullpointerexception我得到這個錯誤..請幫助我」爲此..我得到答案..感謝您的反饋! – 2012-07-22 04:03:17

相關問題