积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 嵌入式软件 >> JAVA
  相关分类: LINUX | WINCE | UC/OS | Bootloader | 下载 | VXWORKS | 网络协议 | JAVA | 汇编 | 驱动设计 | Symbian | XP Embedded | Nucleus | 新产品 | 相关文章 | 综合技术 |
分析MIDP低级事件处理机制
 
作者:mingjava   来源:网络    点击数:734   更新时间:2006-9-1
您可以添加到网摘 让更多人关注此文章:

    在MIDP高级事件处理机制中我们讲述了如何实现CommandListener和ItemStateListener接口来完成高级事件处理。但是来自于键盘输入的低级事件是不能由Command来完成的。你必须继承Canvas类并覆盖其中的方法来完成低级事件的处理。

    通常低级事件的处理是为了满足游戏开发的需要,因为游戏开发相关的问题非常复杂。因此不在这里进行阐述,有兴趣的朋友可以和我索要相关的游戏开发资料。MIDP定义了如下键值在Canvas类内

  • KEY_NUM0
  • KEY_NUM1
  • KEY_NUM2
  • KEY_NUM3
  • KEY_NUM4
  • KEY_NUM5
  • KEY_NUM6
  • KEY_NUM7
  • KEY_NUM8
  • KEY_NUM9
  • KEY_STAR
  • KEY_POUND

    这些都是按键基本值,为了提高程序的可移植性你应该经可能的使用标准键值,当然有些手机是触摸屏的。事件的传递是通过如下方法来实现的。

  • protected void keyPressed(int keyCode)
  • protected void keyReleased(int keyCode)
  • protected void keyRepeated(int keyCode)
  • protected void pointerPressed(int x, int y)
  • protected void pointerDragged(int x, int y)
  • protected void pointerReleased(int x, int y)
  • protected void showNotify()
  • protected void hideNotify()
  • protected abstract void paint(Graphics g)
  • commandAction() method of the CommandListener interface

        开发者应该继承Canvas类的同时覆盖相应的方法来实现低级事件的处理,低级事件的处理是连续的、串行的,在前面的事件返回之前后面的事件不会执行,当然也有例外,你可以参考API doc得到答案。针对上面的几个方法我简单介绍一下,前三个函数是针对按键事件处理的,获得用户的按键值后进行相关的事件处理,有一点需要注意,并不是所有的设备都支持keyRepeat特性,因此在使用之前你应该通过hasRepeatEvents()函数来判断,接下来的三个函数是针对触摸屏式的设备的,它以屏幕上的点的位置位参数,注意在使用他们以前应该判断设备是不是支持这个特性,使用 hasPointerEvents()判断,后面的两个函数是屏幕被显示和被隐藏的时候触发的。paint()和commandAction()大家肯定都很熟悉了,paint()在Canvas被初始化或者调用repaint()的时候执行。
        下面是一个例子,它的功能就是在屏幕上显示出你按下键的键值,界面非常简单因此没有抓图。代码如下所示:

    import javax.microedition.lcdui.Display;
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.midlet.MIDletStateChangeException;
    public class LowLevelMIDlet extends MIDlet
    {

  •  private Display display;
        private KeyCanvas keyCanvas;

        protected void startApp() throws MIDletStateChangeException
        {
            display = Display.getDisplay(this);
            keyCanvas = new KeyCanvas();
            display.setCurrent(keyCanvas);

        }

        protected void pauseApp()
        {
        }

        protected void destroyApp(boolean arg0) throws MIDletStateChangeException
        {
        }

    }

    import javax.microedition.lcdui.Canvas;
    import javax.microedition.lcdui.Command;
    import javax.microedition.lcdui.CommandListener;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.lcdui.Graphics;


    public class KeyCanvas extends Canvas implements CommandListener
    {
        private String key = "Press any key";

        protected void paint(Graphics g)
        {
            g.setColor(255, 255, 255);
            g.fillRect(0, 0, getWidth(), getHeight());
            g.setColor(0, 0, 0);
            g.drawString(key, getWidth() / 2, getHeight() / 2, Graphics.TOP
                    | Graphics.HCENTER);

        }

        public void keyPressed(int keyCode)
        {
            key = keyCode + " is pressed";
            repaint();
        }

        public void keyReleased(int keyCode)
        {
            key = keyCode + " is released";
            repaint();
        }

      
        public void commandAction(Command arg0, Displayable arg1)
        {

        }

    }



  • 相关文章
    · 科技奥运与计算机技术的应用[361]
    · Electromedical[2638]
    · 患者监控[2696]
    · 基于TMS320LF2407A DSP的心电监护系统研究[3134]
    · 用S3C2410实现三导联远程心电监护系统[3064]
    热门评论排行
    ·VHDL设计中电路简化问题的
    ·江苏嵌入式Linux教育培训
    ·锐极LINUX驱动培训班定于
    ·基于实时操作系统μC/OS-
    ·ARM嵌入式系统基础教程(N

    文章评论
        没有任何评论
    *只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
    发表评论
      * 请先[登陆]再进行评论,谢谢。
    评分: 1分 2分 3分 4分 5分
    内容: *
    发帖须知:
    一.所发文章必须遵守《互联网电子公告服务管理规定》;
    二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
    三.严禁恶意重复发帖;
    四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
     
    热点新闻 [更多]
     
    赛普拉斯为用于机器视觉与运动分析应用
    赛普拉斯针对机器视觉与全息数据存储应
    金融危机来袭 台湾LED产
    半导体市场环境恶化 安森美
    Vishay 的新型&nb
    Intersil推出采用小尺寸QFN
    富士通微电子携手西安电子科技大学成立
    纤巧和高压的 LDO&nb
    华为计划收购北电业务 华为
    华为计划收购北电业务 华为
     
    热门下载 [更多]
     
    [ PCB设计] Protel99教程下载
    [ ] 手把手学单片机20个例
    [ ] 单片机做的智能台灯
    [ ] 单片机入门书
    [ ] linux系统移植开发文档
    [ ] IC卡的读写程序
    [ ] 8051单片机C语言彻底应用
    [ 常用软件] 555定时器电路设计软件V1.2
    [ 常用软件] 51定时器计算软件
    [ ] ARM处理器应用开发4步骤
     
    论坛新帖 [更多]
     
    四折批发各种数码相机,摄相机等...
    最低价销售各种品牌手机...
    震撼出售各种品牌笔记本电脑等!...
    IC design 的流程...
    电子工程师,别拿一分钱不当回事...
    新款安全多用途非接触式芯片(T...
    关于ARM启动的一篇文章!...
    Linux网络设备驱动编程...
    linux文件系统基础知识...
    求奇想达QXD-DM642开发...

     
    赞助商 [更多]
     

    ICP许可证号:[粤 05056597]
    联系电话:010-82517432 82517615 传真: 010-82517615

    版权所有 Copyright © 2006 嵌入式技术网