日期:2014-05-20  浏览次数:20898 次

关于一个代码出错的问题
下面这个代码,编译的时候没有错,但运行时却显示:
Exception in thread "main" java.lang.NullPointerException
  at WindowMenu.init<WindowMenu.java:28>
  at WindowMenu.<init><WindowMenu.java:11>
  at Example11_2.main<Example11_2.java:3>

请问下到底是什么问题?。




import javax.swing.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import static javax.swing.JFrame.*;
public class WindowMenu extends JFrame{
JMenuBar menubar;
JMenu menu,subMenu;
JMenuItem item1,item2;
public WindowMenu(){}
public WindowMenu(String s,int x,int y,int w,int h){
init(s);
setLocation(x,y);
setSize(w,h);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);



}
void init(String s){
setTitle(s);
menubar=new JMenuBar();
menu=new JMenu("菜单");
subMenu=new JMenu("软件项目");
item1=new JMenuItem("JAVA话题",new ImageIcon("E:/JAVA/tb/1/a.gif"));
item1=new JMenuItem("动画话题",new ImageIcon("E:/JAVA/tb/1/b.gif"));
item1.setAccelerator(KeyStroke.getKeyStroke('A'));
item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
menu.add(item1);
menu.addSeparator();
menu.add(item2);
menu.add(subMenu);
subMenu.add(new JMenuItem("汔车销售系统",new ImageIcon("E:/JAVA/tb/1/c.gif")));
subMenu.add(new JMenuItem("农场销售系统",new ImageIcon("E:/JAVA/tb/1/d.gif")));
menubar.add(menu);
setJMenuBar(menubar);



}





}


public class Example11_2{
public static void main(String args[]){
WindowMenu win=
new WindowMenu("带菜单的窗口",20,30,200,190);



}



}





------解决方案--------------------
出错在这句.
item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
item2没有初始化。
看楼主的程序,是不是下面这句
item1=new JMenuItem("动画话题",new ImageIcon("E:/JAVA/tb/1/b.gif"));
应为:
item2=new JMenuItem("动画话题",new ImageIcon("E:/JAVA/tb/1/b.gif")); //item2