1
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 是我的文件以及我的类的名称。我搜索了它的原因,尝试调用空对象的实例方法,尝试访问或修改空对象的特定字段,尝试获取此类空对象的长度作为数组。但无法链接到任何导致我的代码出错的原因。需要帮助。提前致谢。

4

2 回答 2

2

在第 65 行添加“finds”变量时,您还没有初始化它。将其添加到上面的初始化列表中:

finds = new MenuItem("finds");

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

于 2013-03-29T12:02:00.127 回答
1

You can also try the following tool if you want to do it for the entire code base: Find Bugs

于 2013-04-01T05:56:34.240 回答