Java Swing中的键盘事件处理[Java编程]
本文“Java Swing中的键盘事件处理[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在java Swing编程历程中,常常需求处理键盘事件,比方处理快速键等.这里就介绍若何定义键盘事件,以及若何处理这些事件.
在jdk1.2中,辨别针对Jcomponent和Text类的对象定制了差别的处理键盘事件的办法:在Jcomponent中,定义了registerKeyboardAction办法,利用这个办法来将需求处理的键盘事件以及处理事件的行为绑定在一同.Text类中具有keymap对象,同Jcomponent中的处理办法近似,这个对象保存着需求处理的键盘事件和对应的行为.
而在jdk1.3中,利用一种新的办法来处理键盘事件,它将jdk1.2的两种办法整合在一同.不需求辨别被处理的是Jcomponent还是Text范例的组件.它定义了两个新的类:InputMap和ActionMap.他们均是简单的表或映射.一个InputMap将一个Keystroke对应到一个对象,ActionMap将一个对象对应到一个行为(Action).普通InputMap中KeyStroke所对应的对象是一个字符串,通过这个字符串可以在ActionMap中查找到呼应的行为.
InputMap和ActionMap中均有put办法.InputMap的put办法可以将Keystroke对应到一个对象,而ActionMap的put办法可以将一个对象对应到一个行为.
在每一个Jcomponent组件中,会有三个缺省的InputMap和一个缺省的ActionMap.他们可以通过调用getInputMap(int condition)和getActionMap()得到.三个InputMap辨别是当组件本身拥有核心时的InputMap(WHEN_FOCUSED),当组件的祖先拥有核心时的InputMap(WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)和组件所在的窗体具有核心时的InputMap(WHEN_IN_FOCUSED_WINDOW)(括号内表示为了得到这些InputMap,应当在getInputMap中设置的参数).以下辨别阐明这三种InputMap:
1, 组件本身拥有核心时的InputMap:当组件拥有核心时,键盘按键按下,则java在这个InputMap中查找键盘事件所对应的KeyStroke对象.
2, 组件的祖先拥有核心时的InputMap:当组件的祖先拥有核心时,键盘按键按下,则java查找这个InputMap.
3, 组件所在的窗口拥有核心时的InputMap:当组件所在的窗口具有核心时,键盘按键按下,则java查找这个InputMap.
当一个键被按下,这个事件被转化成一个KeyStroke对象,java会查找这个Jcomponent的呼应InputMap(比方,当组件的祖先具有核心时,java就查找这个Jcomponent的祖先拥有核心的InputMap)中能否有这个KeyStroke,假若有,取出它所对应的对象(普通是字符串),操纵这个对象在这个Jcomponent的ActionMap中查找,假如找到对应的行为(Action),则java履行这个行为的actionPerformed办法(随后介绍这个办法).从而到达处理键盘事件的目的.
每一个InputMap可以具有parent属性,这个属性的值是一个InputMap.当在一个InputMap中查找不到键盘事件的KeyStroke时,java会自动在它的parent属性指定的InputMap中查找,顺次向上查找,直至找到.利用parent的好处是:当有一些固定的,不但愿用户举行窜改的键盘映射可以存放在parent属性所指定的InputMap中,从而避免被不测改正;别的可以将多个Jcomponent的缺省InputMap设置具有相同的parent,使得可以同享一些键盘绑定的设置.可以通过InputMap类的setparent()办法设置它的parent属性.ActionMap也具有相同的parent属性,利用办法也相同.
以上是若何将一个键盘事件对应到一个行为,以下就简单介绍行为(Action).
行为是一个实现了Action接口的类.在Action接口中定义了7个办法.此中最关键的是actionPerformed()办法.这个办法描写了这个行为的具体操作历程.其他几个办法包含setEnabled,isEnabled,putValue,getValue,addPropertyChangeListener,和removePropertyChangeListener办法.他们辨别用来设置行为能否可用、判断行为可用的状况、设置和获得行为的一些属性,最后两个办法用来答应其他对象在行动对象的属性发生改变后得到告诉.
普通我们利用一个实现了Action接口的大部份办法的抽象类AbstractAction类作为基类,重载actionPerformed办法以实现我们的行为.
我们用一个例子来具体阐明若何举行实际的操作.
首先编写一个具体的行为,对指定的键盘事件举行处理:
public class TextAction extends AbstractAction
{
private String a;
public TextAction(String a)
{ this.a = a; }
public void actionPerformed(ActionEvent parm1)
{
String b = parm1.getActionCommand(); //得到行为的号令字符串
System.out.println("command="+b);
System.out.println("prompt="+this.a);
}
}
以上是“Java Swing中的键盘事件处理[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |