javax.mircoedition.lcdui包实现了一个同时运行在高级API和低级API上的事件模型。它处理诸如用户交互之类的事件并请求重绘屏幕。当触发一个事件时,事件模型获得通知并通过相应的回调使MIDlet相应事件。一共有4种类型的UI事件:
- 表示抽象命令的事件,作为高级API的一部分;
- 表示按下或释放某个键的低级事件,或拥有鼠标的设备的鼠标事件;
- 调用Canvas类的paint()方法的事件,可以通过一个repaint()调用产生;
- 通过调用Display类的callSerially()来请求调用一个Runnable对象的run()方法。
所有的回调都是串行的,决不会并行执行。更确切地说,一个新的回调决不会在另一个回调正在运行的时候启动。下一个回调仅在前一个执行完毕后才会启动,即使在有一系列的事件需要处理的时候也是如此,不管是谁在何处使用,甚至一个事件回调方法本身就是调用者。
抽 象命令(abstract commands)仅仅通过语义上定义,用于避免不得不实现实际的命令按钮。Command(命令按钮)被附加在Displayable对象上,如高级的 List或Form对象,或低级的Canvas对象。addCommand()方法添加一个Command到Displayable对象上。 Command指定了标签、类型和优先级。CommandListener则实现了实际的命令处理。设备的本地风格可以决定哪些Command出现在UI 的什么位置。例如,"Exit"总是被放置在Nokia设备的右软键上方。
还有一些设备提供的操作能帮助操作一些高级API。例如,屏幕对象如List和ChoiceGroup有内键的事件能返回用户输入并交应用程序处理。
—摘自《Symbian OS J2ME编程指南》