图形用户界面 菜单栏、工具栏的创建方法
/** 作者:wwj 日期:2012/4/14 功能:创建一个由菜单栏、工具栏组成的窗口 说明:菜单栏的创建包括菜单棒、多级菜单、弹出式菜单、文件选择器的创建 工具栏包括:标签、按钮的创建 **/ import java.io.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; public class JM extends JFrame { //创建菜单棒 JMenuBar mb=new JMenuBar(); //创建弹出菜单 JPopupMenu pm=new JPopupMenu(); JMenuItem item1=new JMenuItem("复制"); JMenuItem item2=new JMenuItem("剪切"); JMenuItem item3=new JMenuItem("粘贴"); //创建菜单 JMenu m1=new JMenu("文件(F)"); JMenu creat_New=new JMenu("新建"); //创建菜单项 JMenuItem open=new JMenuItem("打开(O)...Ctrl+O"); JMenuItem close=new JMenuItem("保存(S)...Ctrl+s"); JMenuItem exit=new JMenuItem("退出"); JMenu m2=new JMenu("编辑(E)"); JMenuItem copy=new JMenuItem("复制(C)...Ctrl+c"); JMenuItem cut=new JMenuItem("剪切(T)...Ctrl+X"); JMenuItem paste=new JMenuItem("粘贴(p)...Ctrl+v"); JMenu m3=new JMenu("帮助(H)"); JMenuItem content=new JMenuItem("目录"); JMenuItem index=new JMenuItem("索引"); JMenuItem about=new JMenuItem("关于"); //工具栏 JToolBar toolBar=new JToolBar(); //创建工具栏对象 JButton b1=new JButton(new ImageIcon("image/cut_16x16.gif")); JButton b2=new JButton(new ImageIcon("image/copy_16x16.gif")); JButton b3=new JButton(new ImageIcon("image/file_16x16.gif")); JLabel l=new JLabel(""); //文本区 JTextArea editor=new JTextArea(); Font t=new Font("sanserif",Font.PLAIN,12);//设置字体 JM() { super("使用菜单栏的窗口"); setSize(400,300); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { System.err.println("不能设置外观的原因:"+e); } //创建内容面板 Container c; c=getContentPane(); c.add(new JScrollPane(editor)); //多级菜单 JMenuItem i21=new JMenuItem("普通文本文件"); JMenuItem i22=new JMenuItem("HTML页面文件"); //将二级菜单项直接添加到菜单creat_New creat_New.add(i21); creat_New.add(i22); //弹出式菜单 //将弹出式菜单加入到文本区中 pm.add(item1); pm.add(item2); pm.add(item3); IHandler it=new IHandler(); //创建监听器 item1.addActionListener(it);//注册菜单项的鼠标事件监听器 item2.addActionListener(it); item3.addActionListener(it); editor.addMouseListener(it); //注册文本区的鼠标事件监听器 editor.add(pm); //文本选择器 FHandler fh=new FHandler(); //创建监听器 open.addActionListener(fh); close.addActionListener(fh); exit.addActionListener(fh); //工具栏 JTHandler JT=new JTHandler(); //创建监听器 b1.addActionListener(JT); b2.addActionListener(JT); b3.addActionListener(JT); toolBar.add(b1); toolBar.add(b2); toolBar.add(b3); c.add(toolBar,BorderLayout.NORTH); c.add(l,BorderLayout.SOUTH); addFileMenu(); addEditMenu(); addHelpMenu(); addJMenuBar(); setJMenuBar(mb); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private void addFileMenu() //创建“文件”的方法 { m1.add(creat_New,0); m1.add(open); //将菜单项加入到菜单 m1.add(close); m1.addSeparator(); //将分隔条加入到菜单中 m1.add(exit); m1.setFont(t); //设置菜单字体 } //将菜单项添加到编辑菜单 private void addEditMenu() { m2.add(copy); m2.add(cut); m2.addSeparator(); m2.add(paste); m2.setFont(t); } //将菜单项添加到帮助菜单 private void addHelpMenu() { m3.add(content); m3.add(index); m3.addSeparator(); m3.add(about); m3.setFont(t); } //将菜单添加到菜单棒 private void addJMenuBar() { mb.add(m1); mb.add(m2); mb.add(m3); mb.setBackground(Color.cyan); } //弹出菜单的事件处理 private class IHandler implements ActionListener,MouseListener { public void actionPerformed(ActionEvent e) { editor.append("你选择了"+e.getActionCommand()+"\n"); } public void mouseReleased(MouseEvent e1) { if(e1.isPopupTrigger()) pm.show(editor,e1.getX(),e1.getY()); //显示弹出试菜单 } public void mouseClicked(MouseEvent e1){} public void mouseEntered(MouseEvent e1){} public void mouseExited(MouseEvent e1){} public void mousePressed(MouseEvent e1){} } //定义一个内部类实现文件选择处理事件 private class FHandler implements ActionListener { public void actionPerformed(ActionEvent e2) { if(e2.getSource()==open){ loadFile();} else if(e2.getSource()==close){ saveFile(); } else { System.exit(0); } } } public void loadFile() //读取文件的方法 { JFileChooser fc=new JFileChooser(); int r=fc.showOpenDialog(this); if(r==JFileChooser.APPROVE_OPTION) { File file=fc.getSelectedFile(); try{ editor.read(new FileReader(file),null); } catch(IOException e){} } } public void saveFile() //保存文件的方法 { JFileChooser fc=new JFileChooser(); int r=fc.showOpenDialog(this); if(r==JFileChooser.APPROVE_OPTION) { File file=fc.getSelectedFile(); try{ editor.write(new FileWriter(file));} catch(IOException e){} } } //工具栏按钮的事件处理 private class JTHandler implements ActionListener { public void actionPerformed(ActionEvent e) { String s=""; if(e.getSource()==b1) s="单击了剪切按钮\n"; else if(e.getSource()==b2) s="单击了复制按钮\n"; else if(e.getSource()==b3) s="单击了粘贴按钮\n"; l.setText(s); } } //主方法 public static void main(String[] args) { new JM(); } }