www.pudn.com > lll.zip.rar > Applet1.java


/* 
编写三个弹出式菜单。要求: 
如果按键,点击鼠标右键弹出[字号]菜单。 
如果按键,点击鼠标右键弹出[命令]菜单。 
否则,点击鼠标右键弹出[编辑]菜单。 
 
其中字号里内容是 
─────── 
字号菜单  
20号 
30号 
40号 
50号 
─────── 
其中命令里内容是 
─────── 
命令菜单  
打开 
保存 
打印  
退出 
─────── 
其中编辑里内容是 
─────── 
编辑菜单  
复制 
剪切  
粘贴 
删除 
─────── 
*/ 
import javax.swing.*;   //javax.swing.*这个包没有的话可以去网上找一下! 
import java.awt.event.*; 
 
class Test extends JFrame 
/* 
这里我用了J组件,J2中有,老师的机子如果支持就好了! 
如果不支持,可以导入JAVAHOME.JAVA\lib文件! 
除了J组件外其他的事件与方法都和老师讲的一样! 
请老师指正! 
*/	                        
{ 
	JPopupMenu p1,p2,p3; 
	JMenuItem m11,m12,m13,m14,m21,m22,m23,m24,m31,m32,m33,m34; 
	 
	//boolean值表示 CTRL 键是否按下。 
	private boolean isCtrlPressing=false; 
	 
	//boolean值表示 SHIFT 键是否按下。 
	private boolean isShiftPressing=false; 
	 
	//构造方法,初始化本类。 
	public Test() 
	{ 
		ini(); 
		addKeyListener(new MyKeyListener()); 
		addMouseListener(new MyMouseListener()); 
		setTitle("菜单弹出事件"); 
		setSize(500,400); 
		setVisible(true); 
	} 
	 
	//初始化组件。 
	public void ini() 
	{ 
		p1=new JPopupMenu(); 
		p2=new JPopupMenu(); 
		p3=new JPopupMenu(); 
		 
		m11=new JMenuItem("20号"); 
		m12=new JMenuItem("30号"); 
		m13=new JMenuItem("40号"); 
		m14=new JMenuItem("50号"); 
		 
		m21=new JMenuItem("打开"); 
		m22=new JMenuItem("保存"); 
		m23=new JMenuItem("打印"); 
		m24=new JMenuItem("退出"); 
		 
		m31=new JMenuItem("复制"); 
		m32=new JMenuItem("剪切"); 
		m33=new JMenuItem("粘贴"); 
		m34=new JMenuItem("删除"); 
		 
		p1.add(new JLabel("字号菜单")); 
		p1.addSeparator(); 
		p1.add(m11); 
		p1.add(m12); 
		p1.add(m13); 
		p1.add(m14); 
		 
		p2.add(new JLabel("命令菜单")); 
		p2.addSeparator(); 
		p2.add(m21); 
		p2.add(m22); 
		p2.add(m23); 
		p2.add(m24); 
		 
		p3.add(new JLabel("编辑菜单")); 
		p3.addSeparator(); 
		p3.add(m31); 
		p3.add(m32); 
		p3.add(m33); 
		p3.add(m34); 
	} 
	 
	public static void main(String args[]) 
	{ 
		Test test=new Test(); 
	} 
	 
	//键盘监听器。 
	class MyKeyListener extends KeyAdapter 
	{ 
		public MyKeyListener(){} 
		 
		public void keyPressed(KeyEvent e) 
		{ 
			//Ctrl键按下。 
			if(e.getKeyCode()==KeyEvent.VK_CONTROL) 
			{ 
				isCtrlPressing=true; 
			} 
			//Shift键按下。 
			if(e.getKeyCode()==KeyEvent.VK_SHIFT) 
			{ 
				isShiftPressing=true; 
			} 
        } 
    } 
	//鼠标监听器。 
	class MyMouseListener extends MouseAdapter 
	{ 
		 
		public MyMouseListener(){} 
		 
		//鼠标按下事件。 
		public void mousePressed(MouseEvent e) 
		{ 
			showWhich(e); 
		} 
		 
		private void showWhich(MouseEvent e) 
		{ 
			//鼠标右键按下。 
			if(e.getButton()==MouseEvent.BUTTON3) 
			{ 
			    if(isCtrlPressing) 
			    { 
				    p1.show(e.getComponent(),e.getX(),e.getY()); 
				    isCtrlPressing=false; 
			    } 
			    else if(isShiftPressing) 
			    { 
			        p2.show(e.getComponent(),e.getX(),e.getY()); 
			        isShiftPressing=false; 
			    } 
			    else 
			    p3.show(e.getComponent(),e.getX(),e.getY()); 
		    } 
		} 
	} 
}