2015-06-20 181 views
1

今天在eclipse 3.8平臺上卡住了java錯誤。java null指針異常JMenuBar

我嘗試在JFrame上生成一個簡單的MenuBar。 JMenuBar包含JMenu(「幫助」),JMenu包含JMenuItem(「退出」)。該類擴展了JFrame。使用函數(this。)setJMenuBar(MenuBar);我嘗試將我的MenuBar設置爲我的JFrame,只要我只有一個MenuBar,它應該可以正常工作。

GUI類代碼:

import javax.swing.*; 
import java.awt.*; 

public class Taschenrechner extends JFrame{ 

//Instanzvariablen im Zusamenhang mit dem Menu 
private JMenuBar MenuBar; 
private JMenu MenuHelp; 
private JMenuItem MenuHelpQuit; 

public Taschenrechner() { 
    super(); 

    //Flaeche festlegen 
    this.setSize(300,300); 

    //Menukomponenten definieren 
    MenuHelp= new JMenu("Help"); 
    MenuHelpQuit=new JMenuItem("Quit"); 

    //Menukomponenten zusammensetzen 
    MenuHelp.add(MenuHelpQuit); 
    MenuBar.add(MenuHelp); 
    this.setJMenuBar(MenuBar); 
} 
} 

我的主類代碼(聲明OBJEKT和調用setVisible):

public class Taschenrechnerstart { 

public static void main(String[] args) { 
    Taschenrechner taschenrechner1 = new Taschenrechner(); 
    taschenrechner1.setVisible(true); 
} 
} 

現在開始上的代碼,我得到一個NullPointerException錯誤的GUI的class on line:

MenuBar.add(MenuHelp); 

and the main-class on the line上的NullPointerException-錯誤:

Taschenrechner taschenrechner1 = new Taschenrechner(); 

有人有一個想法,爲什麼我的代碼不工作?

+0

你沒有初始化'MenuBar',默認情況下它被設置爲'null',所以你的代碼實際上是'null.add(MenuHelp);'。 – Maroun

回答

2
MenuBar.add(MenuHelp); 

您正在訪問MenuBar變量而未初始化它。

你缺少一個

MenuBar = new JMenuBar (..); 

順便說一句,如果你使用Java命名約定您的代碼將更具可讀性(變量應該以小寫字母開頭)。

+0

你說得對,謝謝。感謝您的快速回答。我絕對沒有看到它。 – stackoverflow321