请大虾看下面程序运行时,抛出空指针异常是怎么回事^_^
源代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class MenuTest extends JFrame
implements ActionListener,MenuListener
{
public MenuTest()
{
setTitle("MenuTest");
setSize(400,300);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
JMenuBar mbar=new JMenuBar();
setJMenuBar(mbar);
JMenu fileMenu=new JMenu("File");
//fileMenu.addMenuListener(this);
fileMenu.add(this);
JMenuItem openItem=new JMenuItem("Open");
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
saveItem=new JMenuItem("Save");
saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
saveAsItem=new JMenuItem("Save As");
mbar.add(makeMenu(fileMenu,new Object[]{"New",openItem,null,saveItem,saveAsItem,null,"Exit"},this));
readonlyItem=new JCheckBoxMenuItem("Read-only");
ButtonGroup Group=new ButtonGroup();
JRadioButtonMenuItem insertItem=new JRadioButtonMenuItem("Insert");
insertItem.setSelected(true);
JRadioButtonMenuItem overtypeItem=new JRadioButtonMenuItem("Overtype");
Group.add(insertItem);
Group.add(overtypeItem);
mbar.add(makeMenu("Edit",new Object[]{new JMenuItem("Cut",new ImageIcon("1.gif")),new JMenuItem("Copy",new ImageIcon("1.gif")),new JMenuItem("Paste",new ImageIcon("1.gif")),null,makeMenu("Options",new Object[] {readonlyItem,null,insertItem,overtypeItem},this)},this));
JMenu helpMenu=new JMenu("Help");
helpMenu.setMnemonic('H');
mbar.add(makeMenu(helpMenu,new Object[]{new JMenuItem("Index",'I'),new JMenuItem("About",'A')},this));
popup=makePopupMenu(new Object[]
{
"Cut","Copy","Paste"
},this);
getContentPane().addMouseListener(new MouseAdapter()
{
public void mouseReleased(MouseEvent evt)
{
if(evt.isPopupTrigger())
popup.show(evt.getComponent(),evt.getX(),evt.getY());
}
});
}
public void actionPerformed(ActionEvent evt)
{
String arg=evt.getActionCommand();
System.out.println(arg);
if(arg.equals("Exit")) System.exit(0);
}
public void menuSelected(MenuEvent evt)
{
saveItem.setEnabled(! readonlyItem.isSelected());
saveAsItem.setEnabled(! readonlyItem.isSelected());
}
public void menuDeselected(MenuEvent evt)
{
}
public void menuCanceled(MenuEvent evt)
{}
public static JMenu makeMenu(Object parent,Object[] items,Object target)
{
JMenu m=null;
if(parent instanceof JMenu) m=(JMenu)parent;
else if(parent instanceof String) m=new JMenu((String)parent);
else return null;
for(int i=0;i<items.length;i++)
{
if(items[i]==null) m.addSeparator();
else m.add(makeMenuItem(items[i],target));
}
return m;
}
public static JMenuItem makeMenuItem(Object item,Object target)
{
JMenuItem r=null;
if(item instanceof String) r=new JMenuItem((String)item);
else if(item instanceof JMenuItem) r=(JMenuItem)item;
else return null;
if(target instanceof ActionListener) r.addActionListener((ActionListener)target);
return null;
}
public static JPopupMenu makePopupMenu(Object []items,Object target)
{
JPopupMenu m=new JPopupMenu();
for(int i=0;i<items.length;i++)
{
if(items[i]==null) m.addSeparator();
else m.add(makeMenuItem(items[i],target));
}
return m;
}
public static void main(String args[])
{
Frame f=new MenuTest();
f.show();
}
private JMenuItem saveItem;
private JMenuItem saveAsItem;
private JCheckBoxMenuItem readonlyItem;
private JPopupMenu popup;
}
等待各位大虾的帮助^-^
源代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class MenuTest extends JFrame
implements ActionListener,MenuListener
{
public MenuTest()
{
setTitle("MenuTest");
setSize(400,300);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
JMenuBar mbar=new JMenuBar();
setJMenuBar(mbar);
JMenu fileMenu=new JMenu("File");
//fileMenu.addMenuListener(this);
fileMenu.add(this);
JMenuItem openItem=new JMenuItem("Open");
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
saveItem=new JMenuItem("Save");
saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
saveAsItem=new JMenuItem("Save As");
mbar.add(makeMenu(fileMenu,new Object[]{"New",openItem,null,saveItem,saveAsItem,null,"Exit"},this));
readonlyItem=new JCheckBoxMenuItem("Read-only");
ButtonGroup Group=new ButtonGroup();
JRadioButtonMenuItem insertItem=new JRadioButtonMenuItem("Insert");
insertItem.setSelected(true);
JRadioButtonMenuItem overtypeItem=new JRadioButtonMenuItem("Overtype");
Group.add(insertItem);
Group.add(overtypeItem);
mbar.add(makeMenu("Edit",new Object[]{new JMenuItem("Cut",new ImageIcon("1.gif")),new JMenuItem("Copy",new ImageIcon("1.gif")),new JMenuItem("Paste",new ImageIcon("1.gif")),null,makeMenu("Options",new Object[] {readonlyItem,null,insertItem,overtypeItem},this)},this));
JMenu helpMenu=new JMenu("Help");
helpMenu.setMnemonic('H');
mbar.add(makeMenu(helpMenu,new Object[]{new JMenuItem("Index",'I'),new JMenuItem("About",'A')},this));
popup=makePopupMenu(new Object[]
{
"Cut","Copy","Paste"
},this);
getContentPane().addMouseListener(new MouseAdapter()
{
public void mouseReleased(MouseEvent evt)
{
if(evt.isPopupTrigger())
popup.show(evt.getComponent(),evt.getX(),evt.getY());
}
});
}
public void actionPerformed(ActionEvent evt)
{
String arg=evt.getActionCommand();
System.out.println(arg);
if(arg.equals("Exit")) System.exit(0);
}
public void menuSelected(MenuEvent evt)
{
saveItem.setEnabled(! readonlyItem.isSelected());
saveAsItem.setEnabled(! readonlyItem.isSelected());
}
public void menuDeselected(MenuEvent evt)
{
}
public void menuCanceled(MenuEvent evt)
{}
public static JMenu makeMenu(Object parent,Object[] items,Object target)
{
JMenu m=null;
if(parent instanceof JMenu) m=(JMenu)parent;
else if(parent instanceof String) m=new JMenu((String)parent);
else return null;
for(int i=0;i<items.length;i++)
{
if(items[i]==null) m.addSeparator();
else m.add(makeMenuItem(items[i],target));
}
return m;
}
public static JMenuItem makeMenuItem(Object item,Object target)
{
JMenuItem r=null;
if(item instanceof String) r=new JMenuItem((String)item);
else if(item instanceof JMenuItem) r=(JMenuItem)item;
else return null;
if(target instanceof ActionListener) r.addActionListener((ActionListener)target);
return null;
}
public static JPopupMenu makePopupMenu(Object []items,Object target)
{
JPopupMenu m=new JPopupMenu();
for(int i=0;i<items.length;i++)
{
if(items[i]==null) m.addSeparator();
else m.add(makeMenuItem(items[i],target));
}
return m;
}
public static void main(String args[])
{
Frame f=new MenuTest();
f.show();
}
private JMenuItem saveItem;
private JMenuItem saveAsItem;
private JCheckBoxMenuItem readonlyItem;
private JPopupMenu popup;
}
等待各位大虾的帮助^-^
解决方案 »
- eclipse 、netbeans 的程序文件夹里怎么有.exe文件?
- number1和number2的值都为10000000000,求sum程序表示错误。
- 我有两个在同一包下的类,想在b类中调用this.dispose把由a类建立的一个窗口关闭。。应该怎么写。。this.dispose不能在b类下执行
- 如何实现从键盘输入字符,并打印出这个字符
- 使用commonupload上传附件
- 大家帮忙看一下简单的发牌程序.......
- 请问大家一个基础问题,关于java绘制图形方面的。
- 关于timer类的机理问题
- 帮忙看下这个错误提示
- java中的JSON解析包用哪一个比较好呢,外加一个正则问题
- 新手提问,先谢谢各位大虾,一个java小程序
- 一个JAVA的小问题,急!急!请高手帮忙
你的MenuTest类继承自JFrame类,而JFrame属于Window类,该类有一个特性是不能嵌入其它Component容器中。