⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selectsymbolscreen.java

📁 一個手機程序(電子詞典),一個不可多得的源碼程序,是學習J2ME的好東東.
💻 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 + -