首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

猎奇怪!好郁闷啊!JMenu的下拉菜单弹不出来

2011-12-07 
好奇怪!好郁闷啊!JMenu的下拉菜单弹不出来各位同仁,一个奇快的问题发生在如下程序中,现请高人指点:问题是:

好奇怪!好郁闷啊!JMenu的下拉菜单弹不出来
各位同仁,一个奇快的问题发生在如下程序中,现请高人指点:
问题是:file菜单可以弹出下拉菜单,但是无法点击下拉菜单中的选项;edit菜单弹不出下拉菜单。本程序编辑、运行无误!
/**
  *  
  */

/**
  *   @author   yongjie66@126.com
  *
  */
import   java.awt.*;
import   java.awt.event.*;
import   javax.swing.*;
import   javax.swing.event.*;
public   class   JMenuTest     {

/**
  *   定义控件
  */
JFrame   frm=null;
JTextArea   txta=null;
JMenu   menuFile=null,menuEdit=null,openmenu=null;
JMenuItem   open=null,close=null,exit=null,save=null,newf=null,openOld=null,openNew=null,copy=null,paste=null,cut=null;

public   JMenuTest()   {
//   TODO   Auto-generated   constructor   stub
/*
  *   构造函数,初始化
  */
frm=new   JFrame( "JMenu   Test ");
Container   cp=frm.getContentPane();
JMenuBar     menuBar=new   JMenuBar();
frm.setJMenuBar(menuBar);

menuFile=new   JMenu( "file ");
menuEdit=new   JMenu( "Edit ");

menuBar.add(menuFile);
menuBar.add(menuEdit);

open=new   JMenuItem( "open   File ", 'O ');//设置快捷键为 'O '
//open.setMnemonic( 'O ');//设置快捷键为 'O '方法二
open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.ALT_MASK));//设置快捷键‘O’,屏蔽ALT键
open.setIcon(new   ImageIcon( "2.gif "));//添加图标
newf=new   JMenuItem( "new   File ");
newf.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.ALT_MASK));
newf.setIcon(new   ImageIcon( "4.gif "));
save   =new   JMenuItem( "save   File ");
save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.ALT_MASK));
save.setIcon(new   ImageIcon( "6.gif "));
close   =new   JMenuItem( "close ");
close.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.ALT_MASK));
exit=new   JMenuItem( "exit ");
exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.ALT_MASK));
menuFile.add(open);
menuFile.add(newf);
menuFile.add(save);
menuFile.add(close);
menuFile.addSeparator();
menuFile.add(exit);
openmenu=new   JMenu();
openOld   =new   JMenuItem( "openOld ");
openNew   =new   JMenuItem( "openNew ");
openmenu.add(openOld);
openmenu.add(openNew);
open.add(openmenu);

menuEdit=new   JMenu( "Edit ");
copy=new   JMenuItem( "copy ");
paste=new   JMenuItem( "paste ");
cut=newJMenuItem( "cut ");
menuEdit.add(copy);
menuEdit.add(paste);
menuEdit.add(cut);

/*
  *   注册菜单的事件
  */
open.addActionListener(new   ItemActionLis());
close.addActionListener(new   ItemActionLis());
exit.addActionListener(new   ItemActionLis());
save.addActionListener(new   ItemActionLis());
newf.addActionListener(new   ItemActionLis());
copy.addActionListener(new   ItemActionLis());
openOld.addActionListener(new   ItemActionLis());
openNew.addActionListener(new   ItemActionLis());
paste.addActionListener(new   ItemActionLis());
cut.addActionListener(new   ItemActionLis());
txta=new   JTextArea();
cp.add(txta);

frm.setBounds(300,300,500,400);


frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}
class   ItemActionLis   implements   ActionListener
{
public   void   actionPerformed(ActionEvent   ex)
{
if((JMenuItem)ex.getSource()==open)
{
txta.setText( "你点击了打开菜单 ");
}
else   if((JMenuItem)ex.getSource()==openOld)
{
txta.setText( "你点击了打开旧菜单 ");
}
else   if((JMenuItem)ex.getSource()==openNew)
{
txta.setText( "你点击了打开新菜单 ");
}
else   if((JMenuItem)ex.getSource()==save)
{
txta.setText( "你点击了保存菜单 ");
}
else   if((JMenuItem)ex.getSource()==close)
{
txta.setText( "你点击了关闭菜单 ");
}
else   if((JMenuItem)ex.getSource()==exit)
{
txta.setText( "你点击了退出菜单 ");
}
else   if((JMenuItem)ex.getSource()==newf)
{
txta.setText( "你点击了新建菜单 ");
}
else   if((JMenuItem)ex.getSource()==copy)
{
txta.setText( "你点击的是复制菜单 ");
}
else   if((JMenuItem)ex.getSource()==cut)
{
txta.setText( "你点击的是剪切菜单 ");
}
else   if((JMenuItem)ex.getSource()==paste)
{
txta.setText( "你点击的是粘贴菜单 ");
}
}

}

/**
  *   @param   args
  */
public   static   void   main(String[]   args)   {
//   TODO   Auto-generated   method   stub
new   JMenuTest();

}

}


[解决办法]
怎样在菜单中套菜单呢?比如说打开IE中的“文件”-》“新建”-》“窗口”
--------------------

JMenu fileMenu = new JMenu( "文件 "); //一级菜单
JMenu newMenu = new JMenu( "新建 "); //二级菜单
JMenuItem winMenuItem = new JMenuItem( "窗口 "); //注意:作后是菜单项JMenuItem
fileMenu.add(newMenu);
newMenu.add(winMenuItem);
winMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//事件处理代码....
}
});

热点排行