?? selectsymbolscreen.java
字號:
package org.zblog.zenghelper.screen.sub;
import javax.microedition.lcdui.Command;
import org.zblog.zenghelper.util.Navigator;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import java.util.Vector;
import org.zblog.zenghelper.screen.AddWordScreen;
/**
* <br><strong>Z英語學習助手-AddWordScreen-修改英標屏幕</strong><br>
* <br>該屏幕是隸屬于AddWordScreen下的子屏幕,用于修改單詞的音標.該類采用低級API方式,
* 采用分屏的方式顯示所有英標,供用戶選擇.
*
* @author <a href="mailto:zcw@zblog.org">朱傳偉</a><br>
* <a href="http://www.zblog.org">www.zblog.org</a></p>
* @version <strong>ZEnHelper</strong> Ver 1.0
*/
public class SelectSymbolScreen extends Canvas implements CommandListener{
public int page=0;
private final static int symbolCount=42;
public Vector symbol=null;
public Command update=null;
public Command nextPage=null;
public AddWordScreen aws=null;
public SelectSymbolScreen(AddWordScreen aw) {
aws=aw;
symbol=aws.ybs;
update=new Command("確定",Command.OK,1);
nextPage=new Command("翻頁",Command.CANCEL,1);
addCommand(update);
addCommand(nextPage);
setCommandListener(this);
}
public void commandAction(Command command, Displayable displayable) {
String lb=command.getLabel();
if(lb.equals("翻頁")){
page++;
if(page>3)page=0;
repaint();
}
else if(lb.equals("確定")){
aws.ybs=symbol;
Navigator.show(aws);
}
}
/**
* 該方法用于捕獲用戶的上下左右翻屏事件,以及英標選擇事件.
* @param keycode int
*/
public void keyPressed(int keycode){
if(keycode==Canvas.KEY_STAR){
if(page<3)
symbol.addElement((page*12+9)+"");
}
else if(keycode==Canvas.KEY_POUND){
if(page<3)
symbol.addElement((page*12+11)+"");
}
else if(keycode>=Canvas.KEY_NUM1&&keycode<Canvas.KEY_NUM8){
symbol.addElement((page*12+(keycode-Canvas.KEY_NUM1))+"");
}
else if(keycode==Canvas.KEY_NUM0){
if(page<3)
symbol.addElement((page*12+10)+"");
}
else if(keycode==Canvas.KEY_NUM8||keycode==Canvas.KEY_NUM9){
if(page<3)
symbol.addElement((page*12+(keycode-Canvas.KEY_NUM1))+"");
}
//清除最后一個
else if(keycode==-8){
if(symbol.size()>0)
symbol.removeElementAt(symbol.size()-1);
}
//上-1 下-2 左-3 右-4 翻頁
else if(keycode==-1||keycode==-3){
page--;
if(page<0)page=3;
repaint();
}
else if(keycode==-2||keycode==-4){
page++;
if(page>3)page=0;
repaint();
}
repaint();
}
protected void paint(Graphics gp) {
int xx=gp.getClipWidth();
int yy=gp.getClipHeight();
gp.setColor(255,255,255);
gp.fillRect(0,0,xx,yy);
//計算單元格x,y
int noX=4;
int noY=25;
int x=(xx-noX*2)/3;
int y=(yy-noY-2)/4;
//繪制音標結果框
gp.setColor(128,128,128);
gp.drawRect(noX,2,noX+x*3-3,noY-5);
//繪制音標結果
Image pim=null;
try{
int px=noX+2;
int py=0;
for (int i = 0, n = symbol.size(); i < n; i++) {
pim = Image.createImage("/org/zblog/zenghelper/res/symbol/" +
symbol.elementAt(i) + ".png");
py=noY-pim.getHeight()-5;
gp.drawImage(pim,px,py,Graphics.TOP | Graphics.LEFT);
px=px+pim.getWidth();
}
}
catch(Exception e){e.printStackTrace();}
//繪制表格
gp.setColor(231,231,231);
for(int n=4;n>=0;n--)
gp.drawLine(noX,noY+y*n,noX+x*3,noY+y*n);
for(int n=3;n>=0;n--)
gp.drawLine(noX+x*n,noY,noX+x*n,noY+y*4);
//繪制音標到表格中
gp.setColor(0,0,0);
try{
Image ti=null;
for (int n = 0, i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
if((page * 12 + n)<symbolCount){
ti = Image.createImage(
"/org/zblog/zenghelper/res/symbol/" +
(page * 12 + n) + ".png");
n++;
//計算圖片上下左右應該空的位置
int tx = (x - ti.getWidth()) / 2;
int ty = (y - ti.getHeight()) / 2;
gp.drawImage(ti, j * x + noX + tx, i * y + noY + ty,
Graphics.TOP | Graphics.LEFT);
}
}
}
}
catch(Exception e){
throw new NullPointerException(e.toString());
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -