无论是应用程序还是游戏,有一个漂亮的操作菜单能为你的作品增加魅力。最近在学习J2ME的时候发现J2ME中用List做出来的菜单不是很满意,呵呵! 想到Canvas/*
* ListCanvasMidlet.java
*
* Created on 2006年4月27日, 下午8:34
*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
*
* @author jack
* @version
*/
public class ListCanvasMidlet extends MIDlet implements CommandListener {
private static ListCanvasMidlet instance;
private Display display;
private ListCanvas listCanvas;
public ListCanvasMidlet ()
{
instance=this;
display=Display.getDisplay(this);
listCanvas=new ListCanvas();
listCanvas.setCommandListener(this);
// Add the Exit command
listCanvas.addCommand(new Command("Exit", Command.EXIT, 1));
listCanvas.addCommand(new Command("OK", Command.OK, 1));
}
public void startApp() {
display.setCurrent(listCanvas);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public static void quitApp() {
instance.destroyApp(true);
instance.notifyDestroyed();
instance = null;
}
public void commandAction(Command c, Displayable displayable) {
if(c.getCommandType()==Command.EXIT)
{
this.quitApp();
}
else if(c.getCommandType()==Command.OK)
{
//回应选项信息
String message="选择了第"+listCanvas.selectEnm+"个选项";
Alert a = new Alert("", message, null, AlertType.INFO);
display.setCurrent(a);
}
}
}
/*
* ListCanvas.java
*
* Created on 2006年4月27日, 下午8:34
*/
import javax.microedition.lcdui.*;
/**
*
* @author 欧建林
* @version
*/
public class ListCanvas extends Canvas {
/**
* constructor
*/
public int selectEnm=1;//焦点跟踪ID
public ListCanvas() {
}
/**
* paint
*/
public void paint(Graphics g) {
int width=this.getWidth();
int height=this.getHeight();
g.setColor(0x00000);
g.fillRect(0, 0,width, height);
// g.drawString("Sample Text",0,0,Graphics.TOP|Graphics.LEFT);
for(int i=1;i<6;i++)
{
if(i==this.selectEnm)
{
g.setColor(0xff0000);
}
else
{
g.setColor(0xffffff);
}
g.fillRoundRect(width/10, 20+i*40, (width/10)*8, 30, 15, 15);
g.setColor(0x00000);
g.drawString("第"+i+"个选项",width/2,20+i*40,Graphics.TOP|Graphics.HCENTER);
}
}
/**
* Called when a key is pressed.
*/
protected void keyPressed(int keyCode) {
int keyState=this.getGameAction(keyCode);
if(keyState==this.DOWN)
{
this.selectEnm++;
if(this.selectEnm>5)this.selectEnm=1;
repaint();
}
if(keyState==this.UP)
{
this.selectEnm--;
if(this.selectEnm<1)this.selectEnm=5;
repaint();
}
}
}