在这一篇中,我将向大家介绍图形用户界面中的低级图形用户界面。所谓低级图形用户界面,指的是那种我们可以自己在上面画图的控件,它是和TextBox,List等等这些用户控件刚好相对的概念,因为这些用户控件的形状是事先画好的,无需我们程序员操心,所以称为高级图形界面。低级图形用户界面什么东西都需要我们自己画,所以比较复杂,当然也更加灵活,只有想不到,没有画不出,所以我们先介绍它。
在J2ME开发中,低级图形用户界面是由javax.microedition.lcdui.Canvas类实现的,我们只要继承这个类,并实现这个类的paint方法,就可以随心所欲的进行绘画了。当然,绘画之前,我们少不了要了解我们的手机屏幕究竟有多大的画图空间,这可以通过调用Canvas类的getWidth和getHeight方法实现。下面是一个简短的程序,向大家演示了怎么获画布的大小,同时,也算是一个小小的框架。首先,当然是创建我们自己的画布,代码如下: package com.xkland.j2me;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
/** *//**
*
* @author 海边沫沫
*/
public class MyCanvas extends Canvas {
/** *//** Creates a new instance of MyCanvas */
public MyCanvas() {
}
public void clearBackground(Graphics g){
int color = g.getColor();
g.setColor(0xffffff);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(color);
}
public void paint(Graphics g){
//清除背景
clearBackground(g);
//显示可供绘图的区域的大小
g.drawString("宽度:",10,10,Graphics.LEFT|Graphics.TOP);
g.drawString(String.valueOf(getWidth()),50,10,Graphics.LEFT|Graphics.TOP);
g.drawString("高度:",10,25,Graphics.LEFT|Graphics.TOP);
g.drawString(String.valueOf(getHeight()),50,25,Graphics.LEFT|Graphics.TOP);
}
}
第二个类当然就是我们的Midlet了,因为它是主程序嘛。在程序启动的时候调用display.setCurrent将画布设置为主界面,同时设置事件监听器。代码比较简单,如下: packagecom.xkland.j2me;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/** *//**
*
* @author 海边沫沫
* @version
*/
public class CanvasTest extends MIDlet{
private Canvas canvas = new MyCanvas();
private Display display = null;
private Command exitCommand = new Command("退出",Command.EXIT,1);
public void startApp() {
if(display==null){
display = Display.getDisplay(this);
canvas.addCommand(exitCommand);
canvas.setCommandListener(new MyCommandListener(this,canvas));
display.setCurrent(canvas);
}
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}