/**/
/*
* AbstractMenuForm.java
*
* Created on 2006年12月31日, 上午10:36
*
* To change this template, choose Tools | Options and locate the template under
* the Source Creation and Management node. Right-click the template and choose
* Open. You can then make changes to the template in the Source Editor.
*/
package edu.fjtu.ui;
import java.util.Vector;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
/** */ /**
*
* @author gaobin
* 自定义菜单窗体
* 只需要输入 字符串就可以了
*
*/
public class AbstractMenuForm extends Canvas ... {
//set selected and unselected font
private Font lowFont = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL);
private Font highFont = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
//1 is unselected color
//2 is selected color
//3 is selected background color
private int lowColor = 0x000000FF;
private int highColor = 0x00FF0000;
private int highBGColor = 0x00CCCCCC;
private int startHeight = 10;
private int fontmaxwidth = 20;
private int spacing = 2; // spacing between menu items
private int appearNum = 6;//define number menu appear on desk定义桌面上显示的菜单项数
private int width;
private int height;
protected int menuIdx = 0;//当前选中位置
private int menuCount;
protected Vector strVector;
public AbstractMenuForm(Vector strVector1) ...{
width = getWidth();
height = getHeight();
strVector = new Vector();
strVector = strVector1;
menuCount = strVector.size();
}
public void paint(Graphics g)...{
g.setColor(188,223,155);
g.fillRect(0,0,width,height);
g.setColor(0,0,0);
int tempnum = appearNum>menuCount?menuCount:appearNum;
paint1(g,tempnum);
}
/**//* 超复杂
* 自己看吧 看不懂也没关系-,-
* 反正只要接受一个 全部包含字符串的VECTOR就可以了
* */
public void paint1(Graphics g,int tempnum)...{
for(int i=0;i<tempnum;i++) ...{
if(tempnum-menuIdx>0) ...{
String s = (String)strVector.elementAt(i);
if (i==menuIdx) ...{
g.setColor(highBGColor);
g.fillRect(0,startHeight + (highFont.getHeight()+spacing)*i,highFont.stringWidth(s),highFont.getHeight());
g.setFont(highFont);
g.setColor(highColor);
g.drawString(s,0,startHeight + (highFont.getHeight()+spacing)*i,Graphics.LEFT|Graphics.TOP);
} else ...{
g.setFont(lowFont);
g.setColor(lowColor);
g.drawString(s,0,startHeight + (highFont.getHeight()+spacing)*i,Graphics.LEFT|Graphics.TOP);
}
}else...{
int j = menuIdx-tempnum+i+1;
String s = (String)strVector.elementAt(j);
if (j==menuIdx) ...{
g.setColor(highBGColor);
g.fillRect(0,startHeight + (highFont.getHeight()+spacing)*(tempnum-1),highFont.stringWidth(s),highFont.getHeight());
g.setFont(highFont);
g.setColor(highColor);
g.drawString(s,0,startHeight + (highFont.getHeight()+spacing)*(tempnum-1),Graphics.LEFT|Graphics.TOP);
} else ...{
g.setFont(lowFont);
g.setColor(lowColor);
g.drawString(s,0,startHeight + (highFont.getHeight()+spacing)*i,Graphics.LEFT|Graphics.TOP);
}
}
}
}
protected void keyPressed(int code) ...{
if (getGameAction(code) == Canvas.UP && menuIdx - 1 >= 0) ...{
menuIdx--;
} else if (getGameAction(code) == Canvas.DOWN && menuIdx + 1 < menuCount) ...{
menuIdx++;
}
repaint();
}
//public abstract void initstrVector();
//所有的GET SET方法
public Font getLowFont() ...{
return lowFont;
}
public void setLowFont(Font lowFont) ...{
this.lowFont = lowFont;
}
public Font getHighFont() ...{
return highFont;
}
public void setHighFont(Font highFont) ...{
this.highFont = highFont;
}
public int getLowColor() ...{
return lowColor;
}
public void setLowColor(int lowColor) ...{
this.lowColor = lowColor;
}
public int getHighColor() ...{
return highColor;
}
public void setHighColor(int highColor) ...{
this.highColor = highColor;
}
public int getHighBGColor() ...{
return highBGColor;
}
public void setHighBGColor(int highBGColor) ...{
this.highBGColor = highBGColor;
}
public int getStartHeight() ...{
return startHeight;
}
public void setStartHeight(int startHeight) ...{
this.startHeight = startHeight;
}
public int getFontmaxwidth() ...{
return fontmaxwidth;
}
public void setFontmaxwidth(int fontmaxwidth) ...{
this.fontmaxwidth = fontmaxwidth;
}
public int getSpacing() ...{
return spacing;
}
public void setSpacing(int spacing) ...{
this.spacing = spacing;
}
public int getAppearNum() ...{
return appearNum;
}
public void setAppearNum(int appearNum) ...{
this.appearNum = appearNum;
}
}
* AbstractMenuForm.java
*
* Created on 2006年12月31日, 上午10:36
*
* To change this template, choose Tools | Options and locate the template under
* the Source Creation and Management node. Right-click the template and choose
* Open. You can then make changes to the template in the Source Editor.
*/
package edu.fjtu.ui;
import java.util.Vector;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
/** */ /**
*
* @author gaobin
* 自定义菜单窗体
* 只需要输入 字符串就可以了
*
*/
public class AbstractMenuForm extends Canvas ... {
//set selected and unselected font
private Font lowFont = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL);
private Font highFont = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
//1 is unselected color
//2 is selected color
//3 is selected background color
private int lowColor = 0x000000FF;
private int highColor = 0x00FF0000;
private int highBGColor = 0x00CCCCCC;
private int startHeight = 10;
private int fontmaxwidth = 20;
private int spacing = 2; // spacing between menu items
private int appearNum = 6;//define number menu appear on desk定义桌面上显示的菜单项数
private int width;
private int height;
protected int menuIdx = 0;//当前选中位置
private int menuCount;
protected Vector strVector;
public AbstractMenuForm(Vector strVector1) ...{
width = getWidth();
height = getHeight();
strVector = new Vector();
strVector = strVector1;
menuCount = strVector.size();
}
public void paint(Graphics g)...{
g.setColor(188,223,155);
g.fillRect(0,0,width,height);
g.setColor(0,0,0);
int tempnum = appearNum>menuCount?menuCount:appearNum;
paint1(g,tempnum);
}
/**//* 超复杂
* 自己看吧 看不懂也没关系-,-
* 反正只要接受一个 全部包含字符串的VECTOR就可以了
* */
public void paint1(Graphics g,int tempnum)...{
for(int i=0;i<tempnum;i++) ...{
if(tempnum-menuIdx>0) ...{
String s = (String)strVector.elementAt(i);
if (i==menuIdx) ...{
g.setColor(highBGColor);
g.fillRect(0,startHeight + (highFont.getHeight()+spacing)*i,highFont.stringWidth(s),highFont.getHeight());
g.setFont(highFont);
g.setColor(highColor);
g.drawString(s,0,startHeight + (highFont.getHeight()+spacing)*i,Graphics.LEFT|Graphics.TOP);
} else ...{
g.setFont(lowFont);
g.setColor(lowColor);
g.drawString(s,0,startHeight + (highFont.getHeight()+spacing)*i,Graphics.LEFT|Graphics.TOP);
}
}else...{
int j = menuIdx-tempnum+i+1;
String s = (String)strVector.elementAt(j);
if (j==menuIdx) ...{
g.setColor(highBGColor);
g.fillRect(0,startHeight + (highFont.getHeight()+spacing)*(tempnum-1),highFont.stringWidth(s),highFont.getHeight());
g.setFont(highFont);
g.setColor(highColor);
g.drawString(s,0,startHeight + (highFont.getHeight()+spacing)*(tempnum-1),Graphics.LEFT|Graphics.TOP);
} else ...{
g.setFont(lowFont);
g.setColor(lowColor);
g.drawString(s,0,startHeight + (highFont.getHeight()+spacing)*i,Graphics.LEFT|Graphics.TOP);
}
}
}
}
protected void keyPressed(int code) ...{
if (getGameAction(code) == Canvas.UP && menuIdx - 1 >= 0) ...{
menuIdx--;
} else if (getGameAction(code) == Canvas.DOWN && menuIdx + 1 < menuCount) ...{
menuIdx++;
}
repaint();
}
//public abstract void initstrVector();
//所有的GET SET方法
public Font getLowFont() ...{
return lowFont;
}
public void setLowFont(Font lowFont) ...{
this.lowFont = lowFont;
}
public Font getHighFont() ...{
return highFont;
}
public void setHighFont(Font highFont) ...{
this.highFont = highFont;
}
public int getLowColor() ...{
return lowColor;
}
public void setLowColor(int lowColor) ...{
this.lowColor = lowColor;
}
public int getHighColor() ...{
return highColor;
}
public void setHighColor(int highColor) ...{
this.highColor = highColor;
}
public int getHighBGColor() ...{
return highBGColor;
}
public void setHighBGColor(int highBGColor) ...{
this.highBGColor = highBGColor;
}
public int getStartHeight() ...{
return startHeight;
}
public void setStartHeight(int startHeight) ...{
this.startHeight = startHeight;
}
public int getFontmaxwidth() ...{
return fontmaxwidth;
}
public void setFontmaxwidth(int fontmaxwidth) ...{
this.fontmaxwidth = fontmaxwidth;
}
public int getSpacing() ...{
return spacing;
}
public void setSpacing(int spacing) ...{
this.spacing = spacing;
}
public int getAppearNum() ...{
return appearNum;
}
public void setAppearNum(int appearNum) ...{
this.appearNum = appearNum;
}
}