仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 627|回复: 17
打印 上一主题 下一主题

[学习教程] 来看Java Swing中的键盘事务处置

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:25:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解
莫相离 该用户已被删除
沙发
发表于 2015-1-19 16:26:09 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
蒙在股里 该用户已被删除
板凳
发表于 2015-1-24 14:05:50 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
只想知道 该用户已被删除
地板
发表于 2015-1-25 07:49:08 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
小妖女 该用户已被删除
5#
发表于 2015-1-25 21:22:54 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
admin 该用户已被删除
6#
发表于 2015-2-4 02:04:16 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
爱飞 该用户已被删除
7#
发表于 2015-2-6 16:10:52 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
精灵巫婆 该用户已被删除
8#
发表于 2015-2-9 22:21:50 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
深爱那片海 该用户已被删除
9#
发表于 2015-2-9 22:46:06 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
老尸 该用户已被删除
10#
发表于 2015-2-28 03:20:20 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
愤怒的大鸟 该用户已被删除
11#
发表于 2015-3-3 19:08:48 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
柔情似水 该用户已被删除
12#
发表于 2015-3-7 10:20:29 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
再现理想 该用户已被删除
13#
发表于 2015-3-8 15:29:06 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
若相依 该用户已被删除
14#
发表于 2015-3-16 03:05:55 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
冷月葬花魂 该用户已被删除
15#
发表于 2015-3-22 19:09:36 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
若天明 该用户已被删除
16#
发表于 2015-3-22 19:09:36 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
兰色精灵 该用户已被删除
17#
发表于 2015-3-22 19:09:37 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
因胸联盟 该用户已被删除
18#
 楼主| 发表于 2015-3-22 19:09:40 | 只看该作者
是一种使用者不需花费很多时间学习的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 15:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表