📄 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 + -