本题中,在窗口右侧添加了一个菜单,右侧为一个文本域,菜单有“File”和“Help”,“File”菜单中有菜单项“New”、“Open”、“Save”、“Save as”和“Exit”,其中“Open”的快捷键为,“Save”的快捷键为,而“Help”菜单以及其中的菜单项“Index”和“About”设定了第一个字母为其快捷字母,通过鼠标单击任一个菜单项或通过快捷键以及快捷字母,都能在后台输入所选择的菜单项。 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax swing.event.*; public class java2 extends JFrame { private J Menuhem savehem; private JMenuhem saveAsltem private JPopupMenu popup; private JTextArea textArea; public java2() {setTitle("java2"); setSize(400,300); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); textArea=new JTextArea(0,0); Container contentPane=getContentPane(); contentPane.add(new JSerollPane(textArea). "Center"); JMenuBar menuBar=new JMenuBar(); menuBar.setLayout(new BoxLayout(menuBar. BoxLayout.Y_AXIS)); getContentPane().add(menuBar, BorderLayout. WEST): HorizontalMenu fileMenu=new HorizontalMenu ("File"); fileMenu.addMenuListener(this); JMenuhem openhem = new JMenultem ("Open"); openItem.setAceelerator(KeyStroke.getKeyStroke (KeyEvent.VK_O,InputEvent.CTRL_MASK)); saveltem=new JMenuhem("Save"); savehem.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_S,InputEvent.CTRL_MASK)); saveAshem=new JMenuhem("Save As"); menuBar.add(makeMenu(fileMenu, new Object[]{ "New",Openhem,null,savehem,saveAshem. null."Exit" },this)); HorizontalMenu helpMenu=new Horizontal- Menu("Help"); helpMenu. (’H’); menuBar.add(Box.createVerticalGlue()); menuBar.add(makeMenu(helpMenu, new Object[] {new JMenuhem("Index",’I’), new JMenuhem("About",’A’) },this)); } public void actionPerformed(ActionEvent evt){ String arg=evt.getActionCommand(); System.out.println(arg); if(arg.equals("Exit")) System.exit(0); } pubile void menuSelected(MenuEvent evt){ } public void menuDeselected(MenuEvent evt){ } public void menuCanceled(MenuEvent evt){ } public HorizontalMenu makeMenu(Object parent, Object[]items,Object target) { HorizontalMenu m=null: if(parent instanceoI HorizontalMenu) m=(HorizontalMenu)parent; else if(parent instaneeof String) m=new HorizontalMenu((String)parrent); else return null; m.setMinimumSize(m.getPreferredSize()); for(int i=0;i if(items[i]= =null) m.addSeparator(); else m.add(makeMenultem(items[i],target)); } return m; } public static JMenuhem makeMenuItem(Object i- tem,Object target) { JMenuItem r=null: if(item instanceof String) r=new JMenultem((String)item); else if(item instanceof JMenuhem) r=(JMenultem)item; else return null; if(target instanceof ActionListener) r.addActionListener((ActionListener)target); return r; } class HorizontalMenu extends J Menu{ HorizontalMenu(String label){ super(label); JPopupMenu pm=getPopupMenu(); pm.setLayout(new BoxLayout(pm,BoxLayout.X _AXIS)); setMinimumSize(getPreferredSize()); } } public static void main(String[] args){ Frame f=newjava2(); f.show(); } }
参考答案:第1处:implements ActionListener,MenuListener 第2处:setMnemonic
解析:【解析】第1处是实现了ActionListener接口,MenuListener接口;第2处是设置Help的快捷键为。