2012-10-03 108 views
0

我已經編寫了圖形用戶界面我的CRUD計劃,當我要運行它,我得到:當我啓動我的GUI時,爲什麼會出現NullPointerException?

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at gui.guimain$1.run(guimain.java:477) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 

那在NPE來自代碼:

public static void main(String[] args){ 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run(){ 
       maingui.showStart();// thats the line with the Exception 
     } 
    }); 
} 

和那方法showStart ():

public void showStart(){ 
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    mainFrame.getContentPane().removeAll(); 
    tabstructure.removeAll(); 
    Produkt filter=new Produkt(); 

    JPanel P=new JPanel(); 
    P=Produktgui(0, filter); 
    JPanel R=new JPanel(); 
    R=Billgui(0); 
    JPanel nR=new JPanel(); 
    nR=Billgui(0); 

    tabstructure.addTab("e", P); 
    tabstructure.addTab("Bills", R); 
    tabstructure.addTab("Pay bill", nR); 
    mainFrame.getContentPane().add(tabstructure); 
    mainFrame.validate(); 
    mainFrame.repaint(); 
    mainFrame.pack(); 
    mainFrame.setVisible(true); 
} 

爲什麼我得到了NullPointerException

+3

好像'maingui'是'null'。你在什麼地方初始化它? – Baz

+2

不回答你的問題,但你有'JPanel P = new JPanel(); P = Produktgui(0,filter);'。在這些情況下是否有某些原因想要調用JPanel()構造函數?這似乎是不必要的/沒有價值。 – mah

回答

5

因爲你打電話的方法是null

仔細查看錯誤消息。它表示異常發生在guimain.java的第477行上。

那時,mainguinull

6

您將不得不創建MainGui的實例。

public static void main(String[] args) { 
    final MainGui maingui = new MainGui(); 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run(){ 
       maingui.showStart();// thats the line with the Exception 
     } 
    }); 
} 
5

您必須實例化對象,然後才能調用它們上的方法。在這種情況下,maingui尚未實例化。

public static void main(String[] args) { 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      MainGUI maingui = new MainGUI(); 
      maingui.showStart(); 
     } 
    }); 
} 
相關問題