import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextField;
import javax.swing.KeyStroke;public class MenuUseDemo extends JFrame
{
public static final int WIDTH=250;
public static final int Height=200;
private JMenuItem newItem;
private JMenuItem openItem;
private JMenuItem closeItem;
private JMenuItem saveItem;
private JMenuItem cutItem;
private JMenuItem copyItem;
private JMenuItem pasteItem;
private JMenuItem cutItemPop;
private JMenuItem copyItemPop;
private JMenuItem pasteItemPop;
private JRadioButtonMenuItem forwardItem;
private JRadioButtonMenuItem backwardItem;
private JPopupMenu popup;
private JTextField myTextField;
public MenuUseDemo()
{
setTitle("hello");
setSize(WIDTH,HEIGHT);
Container contentPane=getContentPane();
JPanel textPanel=new JPanel();myTextField=new JTextField("",20);
textPanel.add(myTextField);
contentPane.add(textPanel);JMenuBar menuBar=new JMenuBar();
setJMenuBar(menuBar);
JMenu fileMenu=new JMenu("文件");
fileMenu.setMnemonic('F');newItem=fileMenu.add(new ShowAction("新建"));
newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));openItem=fileMenu.add(new ShowAction("打开"));
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
fileMenu.addSeparator();
saveItem=fileMenu.add(new ShowAction("保存"));
saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
saveItem.setEnabled(false);closeItem=fileMenu.add(new ShowAction("退出"));
closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_MASK));
closeItem.setEnabled(false);
fileMenu.addSeparator();JMenuItem exitItem=new JMenuItem("exit",'T');
exitItem.addActionListener(new AbstractAction("exit")
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);}
});exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_MASK));
fileMenu.add(exitItem);
JMenu editMenu=new JMenu("编辑");
editMenu.setMnemonic('E');cutItem=new JMenuItem("剪切",'C');
editMenu.add(cutItem);cutItem.addActionListener(new ShowAction("剪切"));
cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
cutItem.setEnabled(false);copyItem=new JMenuItem("复制",'Y');
copyItem.addActionListener(new ShowAction("复制"));
copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y,InputEvent.CTRL_MASK));
copyItem.setEnabled(false);copyItem=new JMenuItem("粘贴",'P');
copyItem.addActionListener(new ShowAction("粘贴"));
copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
copyItem.setEnabled(false);editMenu.add(copyItem);
editMenu.add(pasteItem);JMenu searchMenu= new JMenu("搜索");
searchMenu.setMnemonic('S');ButtonGroup group=new ButtonGroup();
forwardItem=new JRadioButtonMenuItem("Forward");
forwardItem.addActionListener(new ShowAction("Forward"));
forwardItem.setSelected(true);
forwardItem.setEnabled(false);backwardItem=new JRadioButtonMenuItem("Backward");
backwardItem.addActionListener(new ShowAction("Backward"));
backwardItem.setEnabled(false);group.add(forwardItem);
group.add(backwardItem);searchMenu.add(forwardItem);
searchMenu.add(backwardItem);JMenu viewMenu=new JMenu("视图");
viewMenu.setMnemonic('V');JMenu optionMenu=new JMenu("选项");
optionMenu.setMnemonic('O');JCheckBoxMenuItem toolItem=new JCheckBoxMenuItem("ToolBar");
JCheckBoxMenuItem statusItem=new JCheckBoxMenuItem("Status");
toolItem.addActionListener(new ShowAction("ToolBar"));
statusItem.addActionListener(new ShowAction("Status"));optionMenu.add(toolItem);
optionMenu.add(statusItem);viewMenu.add(optionMenu);menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(searchMenu);
menuBar.add(viewMenu);popup=new JPopupMenu();cutItemPop=new JMenuItem("剪切",'C');
cutItemPop.addActionListener(new ShowAction("CutPop"));
cutItemPop.setEnabled(false);
copyItemPop=new JMenuItem("复制",'Y');
copyItemPop.addActionListener(new ShowAction("CopyPop"));
copyItemPop.setEnabled(false);pasteItemPop=new JMenuItem("粘贴",'P');
pasteItemPop.addActionListener(new ShowAction("PastePop"));
pasteItemPop.setEnabled(false);popup.add(cutItemPop);
popup.add(copyItemPop);
popup.add(pasteItemPop);
getContentPane().addMouseListener(new MouseAdapter()
{
public void mouseReleased(MouseEvent event)
{
if(event.isPopupTrigger())
popup.show(event.getComponent(),event.getX(),event.getY());
}
});
}private class ShowAction extends AbstractAction
{
public ShowAction(String name)
{
super(name);
}public void actionPerformed(ActionEvent event)
{
if(event.getSource()==newItem||event.getSource()==openItem)
{
saveItem.setEnabled(true);
closeItem.setEnabled(true);
cutItem.setEnabled(true);
copyItem.setEnabled(true);
pasteItem.setEnabled(true);
forwardItem.setEnabled(true);
backwardItem.setEnabled(true);
cutItemPop.setEnabled(true);
copyItemPop.setEnabled(true);
pasteItemPop.setEnabled(true);
}
if(event.getSource()==closeItem)
{
saveItem.setEnabled(false);
closeItem.setEnabled(false);
cutItem.setEnabled(false);
copyItem.setEnabled(false);
pasteItem.setEnabled(false);
forwardItem.setEnabled(false);
backwardItem.setEnabled(false);
cutItemPop.setEnabled(false);
copyItemPop.setEnabled(false);
pasteItemPop.setEnabled(false);
}
myTextField.setText(getValue(Action.NAME)+"selected.");
}
}
public static void main(String[] args)
{
MenuUseDemo frame=new MenuUseDemo();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}错误:Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at javax.swing.JPopupMenu.add(Unknown Source)
at javax.swing.JMenu.add(Unknown Source)
at MenuUseDemo.<init>(MenuUseDemo.java:115)
at MenuUseDemo.main(MenuUseDemo.java:227)
解决方案 »
- 关于System.load加载dll文件
- JMF捕捉摄像头视频显示的分辨率问题
- 前辈!J2se到底包括哪些?
- 关于定时操作的问题
- 如何使java应用程序后台以windows服务方式启动
- java application程序有什么好得打包工具吗?
- 编译出错:javax.servlet.http does not exist,怎么解决??
- 怎么把string数组中的字符型数字变成数值型的
- 我该怎么样设置寻找类文件默认目录,可以使我在任何目录下javac,都可以找到我默认目录里的cls?
- 一个小小的逻辑问题,关于if ,else if , else的。
- 关于用bat文件设置jre路径的问题,在线等待
- JAVA里无法操作ACCESS数据的问题 , 急``
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextField;
import javax.swing.KeyStroke;public class MenuUseDemo extends JFrame {
public static final int WIDTH = 250; public static final int Height = 200; private JMenuItem newItem; private JMenuItem openItem; private JMenuItem closeItem; private JMenuItem saveItem; private JMenuItem cutItem; private JMenuItem copyItem; private JMenuItem pasteItem; private JMenuItem cutItemPop; private JMenuItem copyItemPop; private JMenuItem pasteItemPop; private JRadioButtonMenuItem forwardItem; private JRadioButtonMenuItem backwardItem; private JPopupMenu popup; private JTextField myTextField; public MenuUseDemo() {
setTitle("hello");
setSize(WIDTH, HEIGHT);
Container contentPane = getContentPane();
JPanel textPanel = new JPanel(); myTextField = new JTextField("", 20);
textPanel.add(myTextField);
contentPane.add(textPanel); JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu fileMenu = new JMenu("文件");
fileMenu.setMnemonic('F'); newItem = fileMenu.add(new ShowAction("新建"));
newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
InputEvent.CTRL_MASK)); openItem = fileMenu.add(new ShowAction("打开"));
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));
fileMenu.addSeparator();
saveItem = fileMenu.add(new ShowAction("保存"));
saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.CTRL_MASK));
saveItem.setEnabled(false); closeItem = fileMenu.add(new ShowAction("退出"));
closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,
InputEvent.CTRL_MASK));
closeItem.setEnabled(false);
fileMenu.addSeparator(); JMenuItem exitItem = new JMenuItem("exit", 'T');
exitItem.addActionListener(new AbstractAction("exit") {
public void actionPerformed(ActionEvent event) {
System.exit(0); }
}); exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,
InputEvent.CTRL_MASK));
fileMenu.add(exitItem); JMenu editMenu = new JMenu("编辑");
editMenu.setMnemonic('E'); cutItem = new JMenuItem("剪切", 'C');
editMenu.add(cutItem); cutItem.addActionListener(new ShowAction("剪切"));
cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,
InputEvent.CTRL_MASK));
cutItem.setEnabled(false); copyItem = new JMenuItem("复制", 'Y');
copyItem.addActionListener(new ShowAction("复制"));
copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y,
InputEvent.CTRL_MASK));
copyItem.setEnabled(false); copyItem = new JMenuItem("粘贴", 'P');
copyItem.addActionListener(new ShowAction("粘贴"));
copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,
InputEvent.CTRL_MASK));
copyItem.setEnabled(false);
/*
* where is your “pasteItem”
*/
pasteItem = new JMenuItem("xxxxxx"); editMenu.add(copyItem);
editMenu.add(pasteItem); JMenu searchMenu = new JMenu("搜索");
searchMenu.setMnemonic('S'); ButtonGroup group = new ButtonGroup();
forwardItem = new JRadioButtonMenuItem("Forward");
forwardItem.addActionListener(new ShowAction("Forward"));
forwardItem.setSelected(true);
forwardItem.setEnabled(false); backwardItem = new JRadioButtonMenuItem("Backward");
backwardItem.addActionListener(new ShowAction("Backward"));
backwardItem.setEnabled(false); group.add(forwardItem);
group.add(backwardItem); searchMenu.add(forwardItem);
searchMenu.add(backwardItem); JMenu viewMenu = new JMenu("视图");
viewMenu.setMnemonic('V'); JMenu optionMenu = new JMenu("选项");
optionMenu.setMnemonic('O'); JCheckBoxMenuItem toolItem = new JCheckBoxMenuItem("ToolBar");
JCheckBoxMenuItem statusItem = new JCheckBoxMenuItem("Status");
toolItem.addActionListener(new ShowAction("ToolBar"));
statusItem.addActionListener(new ShowAction("Status")); optionMenu.add(toolItem);
optionMenu.add(statusItem); viewMenu.add(optionMenu); menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(searchMenu);
menuBar.add(viewMenu); popup = new JPopupMenu(); cutItemPop = new JMenuItem("剪切", 'C');
cutItemPop.addActionListener(new ShowAction("CutPop"));
cutItemPop.setEnabled(false); copyItemPop = new JMenuItem("复制", 'Y');
copyItemPop.addActionListener(new ShowAction("CopyPop"));
copyItemPop.setEnabled(false); pasteItemPop = new JMenuItem("粘贴", 'P');
pasteItemPop.addActionListener(new ShowAction("PastePop"));
pasteItemPop.setEnabled(false); popup.add(cutItemPop);
popup.add(copyItemPop);
popup.add(pasteItemPop); getContentPane().addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent event) {
if (event.isPopupTrigger())
popup
.show(event.getComponent(), event.getX(), event
.getY());
}
});
/*设置其面板大小*/
this.setSize(400,500);
} private class ShowAction extends AbstractAction {
public ShowAction(String name) {
super(name);
} public void actionPerformed(ActionEvent event) {
if (event.getSource() == newItem || event.getSource() == openItem) {
saveItem.setEnabled(true);
closeItem.setEnabled(true);
cutItem.setEnabled(true);
copyItem.setEnabled(true);
pasteItem.setEnabled(true);
forwardItem.setEnabled(true);
backwardItem.setEnabled(true);
cutItemPop.setEnabled(true);
copyItemPop.setEnabled(true);
pasteItemPop.setEnabled(true);
}
if (event.getSource() == closeItem) {
saveItem.setEnabled(false);
closeItem.setEnabled(false);
cutItem.setEnabled(false);
copyItem.setEnabled(false);
pasteItem.setEnabled(false);
forwardItem.setEnabled(false);
backwardItem.setEnabled(false);
cutItemPop.setEnabled(false);
copyItemPop.setEnabled(false);
pasteItemPop.setEnabled(false);
}
myTextField.setText(getValue(Action.NAME) + "selected.");
}
} public static void main(String[] args) {
MenuUseDemo frame = new MenuUseDemo();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
多写些代码,看见类似的错误就能比较快的找到了