设为首页收藏本站language 语言切换
查看: 1186|回复: 0
收起左侧

SWT中自定义控件Traverse实现的必要条件

[复制链接]
发表于 2010-2-20 13:56:52 | 显示全部楼层 |阅读模式
<p >自定义控件通常是从一个Composite或者Canvas继承而来,但是缺省状态下,这两个控件都无法通过键盘的Tab键得到焦点。通过对SWT的debug,我发现要实现该事件,必须满足一个必要条件:为自定义控件安装一个KeyEvent的监听器。<p ><p >实际上我个人认为这出自于SWT的实现者自己的考虑,可能认为如果没有KeyListener,也就意味着没有Key的操作,那么也无需通知Travserse事件,Travserse事件的前提就是Key操作。但是在某些特定情况下我们不需要KeyListener,也可以模拟出KeyEvent的效果,比如通过TraverseListener的keyTraversed方法。总而言之,想通过键盘为某一个自定义控件获取焦点,就老老实实的给控件加一个KeyListener吧。<p ><p >此处附加一些和Traverse相关的小知识:<p ><p >1、如何通过键盘的Tab键跳出 Multiple Style 的Text?<p >        请使用 Ctrl+Tab 组合键。<p ><p >2、如何通过键盘操作让上一个控件获取焦点?<p >        请使用 Shift+Tab 或者 Ctrl+Shift+Tab 组合键。<p ><p >3、Button 可以通过回车键和空格键激活。所以如果有些地方无法使用回车键(比如按钮在Dialog中),可以考虑使用空格键。<p ><p >4、一些特殊的KeyCode:<p >        回车键:SWT.KEYPAD_CR<p >        小键盘的回车键:SWT.TRAVERSE_RETURN<p >        方向键:SWT.ARROW_UP,SWT.ARROW_DOWN,SWT.ARROW_LEFT,SWT.ARROW_RIGHT<p ><p >< align=right></P><p align="center"></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-6 18:21 , Processed in 0.071157 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

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