J2ME--低级用户界面

   1.canvas类是实现低级api的Displayable类的子类

      应用程序要使用canvas,都必须扩展其paint方法,在绘制方法中可以使用graphic对象绘制图片和基本形状,还可以使用矩形裁剪和坐标的方法便利图形绘制。

   低级事件出来未声明未抽象方法,默认实现未空,即可以什么也不做,与用户进行交互的方式可以有键盘和指针2中,并且未了保证程序的移植性,可以将键盘变为动作,不需要提供每个事件处理的方法,应用程序只需要重载其感兴趣的事件处理方法就可以。

 1、 Display.getDisplay(this).setCurrent(canvas);

  每当display的setCurrent方法设置了canvas的子类作为参数的时候,系统会自动调用该类的paint方法,并传入graphics对象作为参数。

  2、setFullScreenMode(true)后,将出发sizeChangeed事件,从系统接受2个参数  canvas全屏后的width和height

   对于Display类的其他子类一样,有可能需要在canvas对象上添加一些command,并注册一个commandListener。Command可以根据设备指定方式映射到软键和菜单上,对于某些设备来说,用于command的软键可能与按键事件提供到canvas类的按键相重合,在这种情况下,需要设备提供一种解决冲突的方法,而无需在程序中处理这个冲突。

   此外,command软键的显示与否依赖设备,有的设备虽然使用了全屏模式,但是还是能看到command,也即全屏没作用

 3、重绘和强制重绘

 当使用高级用户界面与用户进行交互的时候,screen对象的任何改变都会自动反应到屏幕上,而不需要应用程序去主动刷新屏幕。但是当一个canvas对象在屏幕上时候,如果对canvas对象做了某些改变,应用程序必须重新处理屏幕的绘制。canvas提供了2中屏幕的绘制

  public void repaint(int x,int y,int width,int height)

  public void repaint()         效果与repaint(int x,int y,getWidth(),getHeight())效果相同,对于canvas的重绘是异步的,也就是说repaint方法不会等待paint方法的调用结束就会返回。

   Display.callSerially(Runnable r)方法将在Displayable的重绘循环结束后调用Runnable对象的run方法。这点可以用于产生动画效果。

  为了和paint方法同步,可以使用Display.callserially方法,也可以使用serviceRepaint方法。

 

  如果canvas画布在屏幕上不可见,那么调用这2个方法将不会产生任何效果

  对于未处理的重绘请求,Canvas类提供了一种强制重绘的方法:

   public void serviceRepaints()

   调用次方法的结果是,几个重绘请求只产生一个paint方法的调用,直到挂起重绘请求得到满足,而且所调用的paint方法执行完毕,该方法才返回。同步刷新屏幕对于动画和游戏来说非常重要的。

 4】绘制

    a、绘制弧形

    b、绘制矩形

   c、绘制三角形

   d、复制区域

5、字体

  font类用来表示字体的属性和字体的绘制,应用程序不能使用new方法生成一个信的font类,应用程序可以根据字体的属性请求所需的字体风格,然后系统尽可能接近的方方式提供相匹配的字体风格

   public static  Font getFont(int face ,int style,int size)   字型,外观,字号

STYLE_PLAIN   值0,表示普通

            BOLD     1       粗体

            ITALIC    2    斜体

            UNDERLINED   4   下划线  

字型可以组合使用 (PLAIN不能与其他字型组合使用,因为他的值0,组合没意义)可以用下列方法判断Font的字型和属性:public boolean isBOLD()   ....

   字号: SIZE_MEDIUM 0 中号字体

             SIZE_SMAll    8

             SIZE_LARGE 16

字号属性不能组合使用

外观:

       FACE_SYSTEM 0 系统字体

      FACE_MONOSPACE 32 等宽字体

      FACE_PROPORTIONAL 值64 均衡字体

    getFace()用来获得外观属性,返回的值只能是0,32,64    不能组合使用

 

 

posted @ 2013-02-27 14:52  小薇林  阅读(247)  评论(0编辑  收藏  举报