1. Part.java
UI元素的父類,主要描述了字體、屏幕的元素、顏色
package com.nbgame.ui.core;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
public abstract class Part extends Canvas {
Font font = Font.getDefaultFont();
int TL = Graphics.LEFT | Graphics.TOP;
int strWith = font.stringWidth("");
protected static final int BgColor = 0x000000;
protected static final int textColor = 0xF5F5F5;
protected static final int NoSltColor = 0xBBFFFF;
int sw = getWidth();
int sh = getHeight();
}
2. 實現菜單
主要思路就是paint(g)和各種相關動作,不如上下選擇和確定的實現
示意代碼如下
public class Menu extends Part{
String[] elements = null;
int style = 0; // 表示添加位置
public Menu(String[] elements, int type) {
this.elements = elements;
this.style = type;
}
public void paint(Graphics g) {
// TODO Auto-generated method stub
g.setColor(BgColor);
// for(int i=0; i<elements.length;i++){
g.drawString(elements[0], 0, 30, TL);
g.drawString(elements[1], 0, 0, TL);
g.drawString(elements[2], 0, 10, TL);
}
int idx = 0; // 選中的索引數值
/**
* 改變按鍵的數值
*/
public void selectUp() {
idx = (idx - 1 < 0) ? elements.length - 1 : idx - 1;
}
/**
* 改變按鍵的數值
*/
public void selectDown() {
idx = (idx + 1 > elements.length - 1) ? 0 : idx + 1;
}
3. 測試代碼
基本思路:初始化menu對象,然後調用menu.paint(g)實現具體的界面繪製
另外在接收到按鍵之後,可以調用menu.selectUp(), selectDown(), fire()方法,來實現具體的邏輯處理