图形用户界面 菜单栏、工具栏的创建方法

/**
作者: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();
	}

	
}





 

posted on 2012-04-15 13:48  1.曲待续  阅读(252)  评论(0编辑  收藏  举报

导航