LCDUI(Limited Configuration Device UI)
不用AWT/SWING的原因:移动设备CPU慢,内存小;没有鼠标,只是触控屏幕和简单的按钮;屏幕小,不需要重叠窗口;消息处理机制负荷太重。
LCDUI高级API(Screen子类)具有移植性,对画面的掌控程度较低,组件的属性由系统来决定。
LCDUI低级API(使用Canvas的子类和Graphics类)对整个手机的画面具有完全控制权。
两者可以在同一个MIDLet里混合使用。
Displayable抽象类:javax.microedition.lcdui.Displayable的子类可以分成两大类:
Canvas和Screen。Canvas属于低级图形用户界面组件,Screen属于高级图形用户界面组件。
在同一时间,只能由唯一一个Canvas或Screen类的子类出现在屏幕上。
setCurrent()被调用时,前一画面就被取代,所以要自行保存当前画面。
事件处理:
在MIDP中,只要底层侦测到有事件发生,系统就会调用固定接口中的特定方法(回调函数),并传给它特定的参数。
和用户界面相关的回调函数:
1 经由abstract command (javax.microedition.lcdui.Command)
2 使用低级API时,如果机器上的按钮被按下或是触控屏幕被触动时,就调用对应的事件,即使用javax.microedition.lcdui.Canvas类。
3 屏幕重绘时,产生重绘事件,此时Canvas类的paint()被调用,并传入一个Graphics对象的引用。
4 调用Display类的callSerially()方法时,传入一个实现Runnable接口的类,其中的run()会被调用。
Command类
Displayable对象定义了addCommand()/removeCommand()方法
Command类三个参数的构造函数:Command c1=new Command("Back_1",Command.BACK,1);
Command类四个参数的构造函数:Command c1=new Command(短命令,长命令,类型,优先权);
取相应的值:getLabel() getLongLabel() getCommandType() getPriority()
八种类型:
BACK CANCEL EXIT HELP ITEM OK SCREEN STOP
并不会因为设定成某一种类就具有该类型“名称上”的功能。
CommandListener:事件处理接口
委托模型(Delegation Model)
setCommandListener()注册事件处理函数。
commandAction()被调用,当注册事件产生时。
Ticker类
跑马灯。Displayable子类都可以加入Ticker。setTicker()/getTicker()。
标题 setTitle()/getTitle()。