当前位置: 首页 > news >正文

基于LWUIT实现全局按键控制(快捷键)

越往LWUIT框架深入,就发现LWUIT里面有很多好玩的东西。今天要介绍的是,是个类似快捷键的东西:你可以在程序的任何地方触发你预先设计好的按键处理,例如你的程序有4个Form,那么在这4个Form的任何一个长按某键都会有相同的按键方法被触发。。。。先介绍一下原理:自己定义一个Form 类,名为MyForm,继承原始的Form,然后重载keyPressed的方法,里面加入你想要的按键处理.......设计的时候,程序的所有form都是这个MyForm类的对象被引用,那么在这些form上按下某键都会触发相同的按键操作,以下给出MyForm的代码:

package Forms; import com.sun.lwuit.Form; /** *程序的全部Form都继承这个MyForm,那么就可以实现类似快捷键的效果; *在任何的地方都可以触发你准备好的方法。 */ public class MyForm extends Form { public long pressTime=0; public long markTime=0; /** *举个例子,在任何Form里面按下键(不松开)超过3秒测输出提示! */ public void keyPressed(int keyCode) { super.keyPressed(keyCode); if(markTime>0)//为0,则读取当前时间 { pressTime=pressTime+(System. currentTimeMillis() - markTime); if(pressTime>3000) { System.out.println("Keypress for 3 seconds"); pressTime=0; } } markTime=System. currentTimeMillis(); } }

以下给出调用MyForm的Example的代码:

package Forms; import com.sun.lwuit.Button; import com.sun.lwuit.Form; import com.sun.lwuit.Label; import com.sun.lwuit.events.ActionEvent; import com.sun.lwuit.events.ActionListener; import com.sun.lwuit.layouts.BoxLayout; public class testPressButton implements ActionListener { public Form form = new MyForm(); public Button test1 =new Button("bbbbbbbbb"); public Button test2 =new Button("ccccccccc"); public testPressButton(){ form.setTitle("测试全局控制"); form.setLayout(new BoxLayout(BoxLayout.Y_AXIS)); form.addComponent(new Label("aaaaaaaaa")); form.addComponent(test1); form.addComponent(test2); form.setCommandListener(this); } public void actionPerformed(ActionEvent arg0) { Button btn=(Button)arg0.getSource(); if(btn==test1) { System.out.println("bbbbbbbbb"); } else if(btn==test2) { System.out.println("ccccccccc"); } } }

至于如何扩展到方向键,就由用户自己延伸了。。。


相关文章:

  • azure 架构选择
  • Swift 3 点击屏幕任意位置隐藏键盘
  • 成为优秀的程序员真不简单
  • Swift 保存pdf并在webview显示
  • jQuery:收集一些基于jQuery框架开发的控件/jquery插件。(1)
  • Swift显示alert和promp confirmation
  • Winforms: 为什么Graphics.DpiX/DpiY总是返回96
  • Swift 无操作时自动登出
  • SQL 死锁进程查看与处理
  • SQL Server进程阻塞的检查和解决办法
  • Azure 软件架构选择
  • Flex与.NET互操作(十二):FluorineFx.Net的及时通信应用(Remote Shared Objects)(三)
  • 简单说说什么是Restful
  • Flex与.NET互操作(十三):FluorineFx.Net实现视频录制与视频回放
  • Swift中的本地化实现
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【Linux系统编程】快速查找errno错误码信息
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • DataBase in Android
  • Flannel解读
  • httpie使用详解
  • HTTP--网络协议分层,http历史(二)
  • IDEA常用插件整理
  • isset在php5.6-和php7.0+的一些差异
  • Java 网络编程(2):UDP 的使用
  • JavaScript服务器推送技术之 WebSocket
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • leetcode98. Validate Binary Search Tree
  • Node项目之评分系统(二)- 数据库设计
  • orm2 中文文档 3.1 模型属性
  • Python十分钟制作属于你自己的个性logo
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 如何设计一个比特币钱包服务
  • nb
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • (26)4.7 字符函数和字符串函数
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (java)关于Thread的挂起和恢复
  • (k8s中)docker netty OOM问题记录
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (定时器/计数器)中断系统(详解与使用)
  • (二)Eureka服务搭建,服务注册,服务发现
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (三)elasticsearch 源码之启动流程分析
  • (一)为什么要选择C++
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)JAVA中的堆栈
  • (转)jQuery 基础
  • (转)VC++中ondraw在什么时候调用的
  • (转)为C# Windows服务添加安装程序