如何在我的代码中解决NullPointerException?

时间:2013-03-29 11:56:39

标签: java exception nullpointerexception awt

import java.awt.*;
import java.awt.event.*;
public class Project_notepad 
{
    private Frame f;        //basic frame
    public MenuBar mb;      //menubar declaration
    private Menu File, Edit, Format,View, Findit;
    private MenuItem new_file,new_window,open,save,save_as, close, cut, copy,     paste, case_convert, indent,font,style,size,underline,italic,bold,finds,     incremental_find,replace;
    private CheckboxMenuItem status_bar,word_wrap,hide_menu_bar,full_screen;
    public Project_notepad()
    {
        f=new Frame();
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();             class object for setting max screen size
        f.setBounds(0,0,screenSize.width, screenSize.height);                       
        mb=new MenuBar();                                       //menu bar declaration
         File=new Menu("File");
        Edit=new Menu("Edit");
        Format=new Menu("Format");
        View=new Menu("View");
        Findit=new Menu("Find");

        new_file=new MenuItem("new file");                      //menu items declaration
        new_window=new MenuItem("new window");
        open=new MenuItem("open");
        save=new MenuItem("save");
        save_as=new MenuItem("save as");
        close=new MenuItem("close");
        cut=new MenuItem("cut");
        copy=new MenuItem("copy");
        paste=new MenuItem("paste");
        case_convert=new MenuItem("case convert");
        indent=new MenuItem("indent");
        font=new MenuItem("font");
        style=new MenuItem("style");
        size=new MenuItem("size");
        underline=new MenuItem("underline");
        italic=new MenuItem("italic");
        bold=new MenuItem("bold");
        incremental_find=new MenuItem("incremental_find");
        replace=new MenuItem("replace");

        status_bar=new CheckboxMenuItem("status bar");                                  //chechkbox items declaration
        word_wrap=new CheckboxMenuItem("word wrap");
        hide_menu_bar=new CheckboxMenuItem("hide menu bar");
        full_screen=new CheckboxMenuItem("full screen");


        File.add(new_file);                                                             //adding items to menu bar
        File.add(new_window);
        File.add(open);
        File.add(save);
        File.add(save_as);
        File.add(close);
        Edit.add(copy);
        Edit.add(paste);
        Edit.add(case_convert);
        Edit.add(indent);
         Format.add(font);
        Format.add(style);
        Format.add(size);
        Format.add(underline);
        Format.add(italic);
        Format.add(bold);
        Findit.add(finds);
        Findit.add(incremental_find);
        Findit.add(replace);
        View.add(status_bar);
        View.add(word_wrap);
        View.add(hide_menu_bar);
    View.add(full_screen);

    mb.add(File);
    mb.add(Edit);
    mb.add(Format);
    mb.add(View);
    mb.add(Findit);

    f.setMenuBar(mb);
    f.setVisible(true);
}

      public static void main(String args[])
     {
         Project_notepad pr=new Project_notepad();
     }
 }

实际上,我正处于开发java实践记事本的初始阶段,但是将NullPointerException视为

at java.awt.Menu.add(Menu.java:262)
at Project_notepad.<init><Project_notepad.java:65>
at Project_notepad.main<Project_notepad.java:92>

这里,project_notepad是我的文件名和我的类。 我已经搜索了它的原因  试图调用null对象的实例方法,试图访问或修改null对象的特定字段, 尝试获取此类null对象的长度作为数组。 但无法链接到我的代码中的任何错误原因。 需要帮助。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

在第65行添加变量时,尚未初始化“finds”变量。 将其添加到上面的初始化列表中:

finds = new MenuItem("finds");

另外,获得更好的IDE。大多数人应该告诉你是否还没有初始化某些东西,你可以在编译之前捕获它。

答案 1 :(得分:1)

如果要对整个代码库执行此操作,也可以尝试以下工具: Find Bugs