事件监听机制——键盘事件

键盘事件

首先创建一个窗体,在窗体添加一个按钮Button,Frame的布局为流式布局,在构造函数中对Frame进行初始化,通过初始化函数init()封装实现。

要求:

(1)按下键盘上的键时,得到键盘字母和键盘码。

思考:对于一个字母的键和多个字母的键分别怎么处理。例如:A和SHIFT

(2)实现键盘对按钮的控制。就像登陆界面一下,按ENTER实现登陆。

思考:

(1)按钮活动事件与按钮活动事件的区别?

按钮活动包括单机、双击、进入、离开等等,是更大的范围。平时开发时优先选择addActionListener。

(2)如何知道一个事件监听有无适配器?

一般一个组件包括3个方法及3个以上方法时有适配器,方便特定事件处理,创建事件对象。



import java.awt.*;
import java.awt.event.*;

//按钮活动事件与按钮活动事件的区别?优先选择addActionListener

class MouseAndKeyEvent 
{
	//定义该图形所带的组建的引用
	private Frame f;
	private Button btn;

	MouseAndKeyEvent()
	{
		init();
	}

	public void init()
	{
		f=new Frame("My frame");

		//对frame进行基本设置
		f.setBounds(300,100,600,500);
		f.setLayout(new FlowLayout());

		btn=new Button("my button");
		
		//加载一下窗体事件
		myEvent();

		//将组件添加到窗体中
		f.add(btn);
		
		//显示窗体
		f.setVisible(true);

	}

	private void myEvent()
	{
		f.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		});
		
		//给btn添加一个键盘监听
		btn.addKeyListener(new KeyAdapter()
		{
			//*****建议对于不同种类型分条演示*******
			public void keyPressed(KeyEvent e)
			{
				//得到键盘字母 和键盘码
				System.out.println(e.getKeyChar()+"...."+e.getKeyCode());
				
				//获得按下去键的字符串
				System.out.println(KeyEvent.getKeyText(e.getKeyChar())+"...."+e.getKeyCode());
				
				//按ESC使程序退出
				if (e.getKeyCode()==KeyEvent.VK_ESCAPE)
				{
					System.exit(0);
				}

				//组合键练习--按住Ctrl+ENTER
				if (e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
					System.out.println("ctrl+enter is run");
				
			}
		});

		/*

		//按钮活动监听
		btn.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				System.out.println("action ok");
			}
		});


		//当鼠标进入按钮区域触发该事件
		btn.addMouseListener(new MouseAdapter()
		{
			private int count=1;

			//鼠标进入时触发
			public void mouseEntered(MouseEvent e)
			{
				System.out.println("鼠标进入"+count+++"次");
			}

			//点击时触发
			public void mouseClicked(MouseEvent e)
			{
				if(e.getClickCount()==2)
					System.out.println("鼠标双击"+count+++"次");
			}
		});
		*/
		
	}

		
	public static void main(String[] args) 
	{
		new MouseAndKeyEvent();
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值