|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net网页编程比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。
在javaSwing编程过程当中,常常必要处置键盘事务,比方处置快速键等。这里就先容怎样界说键盘事务,和怎样处置这些事务。
在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(intcondition)和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办法以完成我们的举动。
我们用一个例子来详细申明怎样举行实践的操纵。
起首编写一个详细的举动,对指定的键盘事务举行处置:
publicclassTextActionextendsAbstractAction
{
privateStringa;
publicTextAction(Stringa)
{this.a=a;}
publicvoidactionPerformed(ActionEventparm1)
{
Stringb=parm1.getActionCommand();//失掉举动的命令字符串
System.out.println("command="+b);
System.out.println("prompt="+this.a);
}
}
<p>
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解 |
|