栏目分类
开源技术 | Hibernate | JUnit | Tomcat | JBoss | eclipse | Spring | ANT | Struts
java新手入门 | 基础入门 | 开发工具 | JDK | oop面向对象 | 安全配置
J2EE | mvcwea | 应用服务器 | Rmi/Corba/Jini | J2ee核心 | Servlet/JSP | EJB | JDBC/JDO
J2ME | 核心技术 | 嵌入式 | 无线开发
XML | WebServices | XMLBeans
高级技术 | 多线程 | 设计模式 | ULM/OO | p2p/Jxta | JavaSecurity
核心技术 | SwingAwtApplet | 高级编程 | 网络编程 | Jvm技术 | JavaMedia
其它技术 | 资讯动态
排行榜
·J2ME基础入门教程
·熟练使用J2ME在实际开发中的可选包MMAPI
·新手入门之j2me学习方法总结--摘录篇
·J2ME程序开发新手入门九大要点
·J2ME综合:如何在MIDP中实现图片放缩
·J2ME与WebService-KSOAP快速上手
·如何使用“月蚀”进行J2ME开发
·J2ME概述
·J2ME进度条与线程化模型实例解析
·J2ME实现可伸展目录树TreeList(图)
·J2ME的现状与发展
·告诉你J2ME是什么
·知己知彼——J2ME技术详
·Java思路开发易于移植的J2ME游戏
·关于J2ME——MIDP1.0中的碰撞检测
·J2ME工具:使用j2meunit进行游戏测试
·在J2ME中读取各种格式的文本文件
·如何搭建J2ME的开发环境之一二
·J2ME学习系列之如何将J2ME与XML集成
·使用J2ME中的page进行编码转化

    您现在的位置: Linux宝库 >> Java >> J2ME >> 核心技术 >> 文章正文
深入分析J2ME平台MIDP低级事件处理机制
Linux宝库 收集整理  作者:Linux宝库  时间:2007-12-31  收藏本站
来自:http://doc.linuxpk.com/45919.html
联系:linuxmine#gmail.com
分类:[核心技术]
  通常低级事件的处理是为了满足游戏开发的需要,因为游戏开发相关的问题非常复杂。因此不在这里进行阐述,有兴趣的朋友可以和我索要相关的游戏开发资料。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得到答案。下面是一个例子,它的功能就是在屏幕上显示出你按下键的键值,界面非常简单因此没有抓图。代码如下所示:

  //LowLevelMIDlet.java

  import javax.microedition.lcdui.Display;

  import javax.microedition.midlet.MIDlet;

  import javax.microedition.midlet.MIDletStateChangeException;

  /*

  * Created on 2004-6-24

  *

  * TODO To change the template for this generated file go to

  * Window - Preferences - Java - Code Style - Code Templates

  */

  /**

  * @author P2800

  *

  * TODO To change the template for this generated type comment go to Window -

  * Preferences - Java - Code Style - Code Templates

  */

  public class LowLevelMIDlet extends MIDlet

  {

  private Display display;

  private KeyCanvas keyCanvas;

  /*

  * (non-Javadoc)

  *

  * @see javax.microedition.midlet.MIDlet#startApp()

  */

  protected void startApp() throws MIDletStateChangeException

  {

  // TODO Auto-generated method stub

  display = Display.getDisplay(this);

  keyCanvas = new KeyCanvas();

  display.setCurrent(keyCanvas);

  }

  /*

  * (non-Javadoc)

  *

  * @see javax.microedition.midlet.MIDlet#pauseApp()

  */

  protected void pauseApp()

  {

  // TODO Auto-generated method stub

  }

  /*

  * (non-Javadoc)

  *

  * @see javax.microedition.midlet.MIDlet#destroyApp(boolean)

  */

  protected void destroyApp(boolean arg0) throws MIDletStateChangeException

  {

  // TODO Auto-generated method stub

  }

  }

  //KeyCanvas.java

  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;

  /*

  * Created on 2004-6-25

  *

  * TODO To change the template for this generated file go to

  * Window - Preferences - Java - Code Style - Code Templates

  */

  /**

  * @author P2800

  *

  * TODO To change the template for this generated type comment go to Window -

  * Preferences - Java - Code Style - Code Templates

  */

  public class KeyCanvas extends Canvas implements CommandListener

  {

  private String key = "Press any key";

  /*

  * (non-Javadoc)

  *

  * @see javax.microedition.lcdui.Canvas#paint(javax.microedition.lcdui.Graphics)

  */

  protected void paint(Graphics g)

  {

  // TODO Auto-generated method stub

  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();

  }

  /*

  * (non-Javadoc)

  *

  * @see javax.microedition.lcdui.CommandListener#commandAction(javax.microedition.lcdui.Command,

  *

  javax.microedition.lcdui.Displayable)

  */

  public void commandAction(Command arg0, Displayable arg1)

  {

  // TODO Auto-generated method stub

  }

  }
本文来自:http://doc.linuxpk.com/45919.html
 
     最新更新
·深入了解J2ME的几个重要概念
·J2ME学习笔记(6)—连接MIDlet到文本文件
·J2ME学习笔记(5)—MIDlets中的图形编程
·J2ME学习笔记(4)—用MIDPAPI开发MIDlets
·J2ME学习笔记(3)—初次接触MIDlets
·J2ME学习笔记(2)—平台体系结构详解
·J2ME学习笔记(1)—平台介绍及简单实例
·J2METimer-更简单的实现多任务调度执行
·J2ME基础知识
·J2MEMIDP提供的最重要的图形元素
·精通J2ME中的HelloWorld
·J2METimer使用指南
·请关注J2MEWTK2.2的新特性
·详细介绍并掌握J2ME的安全结构
·如何使用“月蚀”进行J2ME开发
·如何搭建J2ME的开发环境之一二
·J2ME编程实例---之数字键的测试
·利用J2ME与ASP建立数据库连接
·J2ME平台构件及开发应用程序示例
·J2ME(CLDC/MIDP)简介
·关于J2MEMIDP1.0.3中的安全问题简述
·学习在J2ME中使用代码
·J2ME的起源和发展历程
·认识了解“J2ME”
·探索J2ME:用GCF通信
·探索J2ME:使用记录管理系统
·探索J2ME:对记录进行排序
·浅析J2EE、J2SE和J2ME
·J2ME应用基础
·探索J2ME:创建开销细节表单