`
atgoingguoat
  • 浏览: 196755 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Kjava林林工具箱源代码(jbuilder工程)

阅读更多
j2me源代码,一个用jbuilder开发的手机便民工具箱的项目。
jbuilder 2005 + wtk2.5
给大家共享一下。一起学习。
项目只能用于学习,限用于商业用途。


源代码分析:

MobileMIDlet启动服务

package cn.mobell.windows;

import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import java.util.Vector;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.ByteArrayInputStream;
import cn.mobell.tool.WmlParser;
import cn.mobell.tool.HttpData;
import cn.mobell.tool.ThreaHttp;

/**
 *
 * <p>
 * Title: 主 MIDlet
 * </p>
 * <p>
 * Description: 项目只能用于学习,限用于商业用途。
 * </p>
 *
 * <p>
 * Copyright: Copyright (c) 2008 - 06
 * </p>
 *
 * <p>
 * Company:  
 * </p>
 *
 * @author atgongguoat@163.com 
 * @version 1.0
 */
public class MobileMIDlet extends MIDlet implements CommandListener  {

    private Display display;
    MobileMainCanvas initCanvas_temp;
    //联网线程(2008-12-24)
//    private ThreaHttp httpThread;
    public MobileMIDlet() {
        HttpData.getInstance().readTimeTest("readTimeTest");
        display = Display.getDisplay(this);
        //启动联网线程
//        httpThread = new ThreaHttp();
//        this.startMidThrea();
        initCanvas_temp = new MobileMainCanvas(this);
        initCanvas_temp.game_start();
        display.setCurrent(initCanvas_temp);

    }

    public void pauseApp() {
        //notify();
    }

    public void startApp() {
    }

    public void exit() {
        initCanvas_temp.game_stop();
        Display.getDisplay(this).setCurrent(null);
        destroyApp(true);
    }

    //传入参数true
    public void destroyApp(boolean parm1) {
        notifyDestroyed();
    }
    public void commandAction(Command command, Displayable displayable) {
    }

//    /**
//     * 启动联网(测试)
//     */
//    private void startMidThrea() {
//        try {
//            httpThread.startThreaHttp();
//            httpThread.initHttp("http://wap.mobell.cn/wendao/wendaolist.php?kjava=1&word=%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%B0%E7%90%83%E4%B8%8D%E6%98%AF%E5%9C%86%E7%9A%84&dosubmit=dosubmit", "init");
//        } catch (Exception exe) {
//            exe.printStackTrace();
//        }
//    }
//    /**
//     * 初始化联网参数
//     * @param wapurl String 访问URL
//     * @param datatype String  存贮数据键值 (key)
//     */
//    public void initHttp(String wapurl, String datatype) {
//        httpThread.wapurl = wapurl;
//        httpThread.datatype = datatype;
//        httpThread.isrun = true;
//    }
}


在上面MIDLet里,启动了canvas MobileMainCanvas,由它来负责画界面。


package cn.mobell.windows;

import java.util.Vector;

import javax.microedition.lcdui.*;
import cn.mobell.port.abstractCanvas;
import cn.mobell.ui.MyTextBox;
import cn.mobell.ui.MyList;
import cn.mobell.ui.MyChoiseGroup;
import cn.mobell.tool.*;
import cn.mobell.ui.Mytextshow;
import java.io.*;

public final class MobileMainCanvas extends abstractCanvas implements Runnable,
        CommandListener {
    public MobileMainCanvas() {
        try {
            jbInit();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }


    MobileInfo mobileInfo;
    private MobileMIDlet midlet;
    public Thread gameThread;
    MyTextBox textbox;
    MyList mylist;
    Mytextshow textshow;
//    MyChoiseGroup choiseGroup1;
//    MyChoiseGroup choiseGroup2;
    boolean showIs = false;
    private boolean httpcatoonbool = false;

    String temptextshow;

    //////////////九宫菜单//////////////
    private Image icons[] = new Image[9];
    private int nrow = 3;
    private int ncol = 3;
    private int imgNum = 0;
    private int[] pointX = new int[9];
    private int[] pointY = new int[9];
    //////////////九宫菜单//////////////

    //Font.SIZE_SMALL); //保存系统字型


    /////////////屏幕坐标//////////////
//    private int title_x; //标题坐标
//    private int title_y = 2;
    private int ticker_x = 0; //滚动条坐标
    private int ticker_y = 47;
    private int text_x = 0; //文本坐标
    private int text_y = 75;
    private int table_x; //下拉框坐标
    private int table_y = 31;
    /////////////屏幕坐标//////////////

//    Command okcommand = new Command("确定", Command.SCREEN, 1);

    //非游戏图片以及片头动画变量
    private Image loadres;
    private Image[] loadImage = new Image[4];
    private Image arrowImage;
    private Image logoImage;
    private Image bgImage;
    private Image bgtopImage;
    private Image bgfootImage;
    private Image buttemImage;
    private Image selectImage;
    private Image listselectImage;
    private Image menuImage;
    private Image arrawLImage;
    private Image arrawRImage;
    private Image arrawPImage;

    private int timeCount; //计数器
    private int timeid; //计数器


    private int keydelay = 0; //用来控制按键时的延迟时间
    private boolean key_press = false; //立即按键,快速执行
    private boolean keyRepeat; //控制按键
    private int key; //键值


    //游戏屏幕的宽度和高度-非全屏模式
    private final int WIDTH = 240;
    private final int HEIGHT = 320;

    private final int TIME_PER_FRAME = 80; //游戏速度的控制
    /*  about variable of game state  */
    public int game_state;
    private static final int P_LOAD = 0; //游戏最先进入的状态
    private static final int P_MENU = 1;
    private static final int P_TABLEFORM = 2;
    private static final int P_EXIT = 9;
    private static final int P_LOADER = 10;
    private boolean quitGame = false; //游戏结束

    /////////////tableForm//////////
    private int tickerStepX; //ticker滚动条 x 变量


    //标题 宽度和高度
    int table_state;
    private static final int TABLEFORM_LIST = 0;
    private static final int TABLEFORM_INPUT = 1;
    private static final int TABLEFORM_SHOW = 2;

    //TabbarNames数组 宽度和高度 根据背景图片设定

    private int tabbarStarX; //TabbarNames数组 菜单初始 X 坐标
    private int tabbarStarY; //TabbarNames数组 菜单初始 Y 坐标
    private int tabbarEndX; //TabbarNames数组 菜单结束 X 坐标
    private int tabbarEndY; //TabbarNames数组 菜单结束 Y 坐标
    private int tabbarStepX = 0; //TabbarNames数组 table 偏移坐标
    private int bgstepX; //TabbarNames数组 table 偏移量
    private int strstepX; //TabbarNames数组 table 偏移量
    private int tabbarStateid;
    private int tabbarStateUPid;
    private int[] tabbarX = new int[9]; //TabbarNames数组 菜单初始 X 坐标
    private int listId;
//    boolean lightID = false;
    /////////////tableForm//////////


    /////////////textshow//////////
    int rowid; //要显示的文本行数长度
    int showId; //超出的行数
    int line; //可显示的行数
    /////////////textshow//////////

    /******************************/
    /*******   联网动画数据定义  ****/
    /******************************/
    private Image httpImage;
    private Image[] httpLoadImage = new Image[4];
    private int urltimeCount ;

    public MobileMainCanvas(MobileMIDlet MID) {

        this.midlet = MID;

        game_init();

        display = Display.getDisplay(midlet);

        this.setFullScreenMode(true);
        //联网线程 初始化及启动
        ThreaHttp.getInstance().startThreaHttp();
    }
    // 游戏初始化
    private final void game_init() {

        //
        logoImage = loadImage("/bglogo.png");
        //
        loadres = loadImage("/loading.png");
        for (int i = 0; i < 4; i++) {
            loadImage[i] = Image.createImage(loadres, 0, i * 15, 145, 15, 0);
        }
        /******************************/
        /*******   联网图片初始化    ****/
        /******************************/
        httpImage = loadImage("/urlloading.png");
        for (int i = 0; i < 4; i++) {
            httpLoadImage[i] = Image.createImage(httpImage, 0, i * 11, 10, 10, 0);
        }
        /****************************/
        bgImage = loadImage("/bg.png");
        bgtopImage = Image.createImage(bgImage, 0, 0, 240, 47, 0);
        bgfootImage = Image.createImage(bgImage, 0, 48, 232, 20, 0);
        buttemImage = Image.createImage(bgImage, 0, 70, 70, 20, 0);
        //
        selectImage = loadImage("/select.png");
        listselectImage = loadImage("/listselect.png");

        /**
         * 载入图片。切割图片资源
         */
        //切割9宫菜单
        menuImage = loadImage("/menu.png");
        for (int i = 0; i < 9; i++) {
            icons[i] = Image.createImage(menuImage, 0 + i * 75, 0, 75, 76, 0);
        }
        //
        arrowImage = loadImage("/arrow.png");
        arrawLImage = Image.createImage(arrowImage, 0, 12, 4, 7, 0);
        arrawRImage = Image.createImage(arrowImage, 5, 12, 4, 7, 0);
        arrawPImage = Image.createImage(arrowImage, 0, 0, 12, 11, 0);

        bgstepX = 4 * stepFontHight;

        for (int r = 0; r < nrow; r++) {
            for (int c = 0; c < ncol; c++) {
                imgNum = r * 3 + c;
                pointX[imgNum] = 5 + (77) * r;
                pointY[imgNum] = 60 + (77) * c;
            }
        }

        tabbarStarX = 12;
        tabbarStarY = 30;
        tabbarEndX = WIDTH - 2 * tabbarStarX;
        tabbarEndY = 53;
        bgstepX = 70;
        strstepX = 0;
        for (int i = 0; i < tabbarX.length; i++) {

            tabbarX[i] = tabbarStarX + (70 - samllfont.stringWidth("开始开始")) / 2 +
                         bgstepX * i;

        }
        mobileInfo = new MobileInfo();

        line = screen_height / stepFontHight;

    }

    //开始线程
    public final void game_start() {
        gameThread = new Thread(this);
        gameThread.start();
    }

    public final void game_stop() {
        gameThread = null;
        System.gc();
    }


    protected final void paint(Graphics g) {
        g.setFont(samllfont);

        try {
            switch (game_state) {

            case P_LOAD: //最先进入得画面,显示loading画面

                drawLoading(g, HEIGHT - 30);

                break;
            case P_MENU: // 进入九宫画面
                drawBG(g);
                paintMenu(g);

//                paintTicker(g, System.getProperty("microedition.platform"));
                paintTicker(g, System.getProperty("microedition.platform"));
                break;
            case P_EXIT:
                paintTicker(g, "退出工具箱,您确定?");
                break;
            case P_TABLEFORM: // 进入TableForm画面
                drawBG(g);
                drawTableFormTabbar(g);

                switch (table_state) {

                case TABLEFORM_LIST:
                    paintTicker(g, "菜单列表页面");
                    drawTableFormList(g);
                    break;
                case TABLEFORM_INPUT:
                    paintTicker(g, mobileInfo.getTabbar(tabbarStateid)[listId]);

                    switch (tabbarStateid) {
                    case 0: //百度
                        switch (listId) {
                        case 0: //百宝知道
                        case 1: //百宝百科
                        case 2: //百宝英汉
                        case 3: //百宝汉英
                        case 4: //全文翻译
                            textbox.paint(g);
                            break;
                        }
                        break;
                    case 1: //金融

                        switch (listId) {
                        case 0: //大盘行情

                            break;
                        case 1: //个股查询
                            textbox.paint(g);
                            break;
                        case 2: //基金查询
                            textbox.paint(g);
                            break;
                        case 3: //外汇价格
//                            mylist.paint(g);
                            break;
                        }
                        break;

                    case 2://彩票
                        switch (listId) {
                        case 0: //体彩
                            mylist.paint(g);
                            break;
                        case 1: //福彩

                            break;

                        }
                    case 3: //生活娱乐

                        break;
                    case 4: //交通出行
                        textbox.paint(g);
                        String[] temp_title = {"线路查询", "站点查询", "换乘查询"}; //联网取标题数据
                        drawList(g, temp_title, 20);
                        break;
                    case 5: //生活工具
                        switch (listId) {

                        case 1: // 常用号码

                            break;
                        case 0: //
                        case 2: //
                        case 3: //
                        case 4: //
                        case 5: //
                            textbox.paint(g);
                            break;
                        }
                        break;
                    case 6: //星座
                        switch (listId) {

                        case 0: // 奇异梦解
                            textbox.paint(g);
                            break;
                        case 1: //每日星运

                            break;
                        }
                        break;
                    case 7: //3G快车

                        break;
                    case 8: //在线帮助

                        break;
                    }
                    break;

                case TABLEFORM_SHOW:
                    paintTicker(g, "查询结果信息");
                    switch (tabbarStateid) {
                    case 0: //百度

                        switch (listId) {
                        case 0: //百宝知道
                            mylist.paint(g);
                            break;
                        case 1: //百宝百科
                        case 2: //百宝英汉
                        case 3: //百宝汉英
                        case 4: //全文翻译
                            textshow.paint(g);
                            break;
                        }

                        break;

                    case 1: //金融
                        switch (listId) {
                        case 0: //大盘行情

                            //直接联网显示大盘行情 显示深市沪市行情
                            textshow.paint(g);
                            break;
                        case 1: //个股查询
                        case 2: //基金查询
                            textshow.paint(g);
                            break;
                        case 3: //外汇价格

                            break;
                        }

                        break;

                    case 2: //彩票查询
                        switch (listId) {
                        case 0: // 体彩

                            break;
                        case 1: //福彩
                            textshow.paint(g);
                            break;
                        }

                        break;
                    case 3: //生活娱乐
                        textshow.paint(g);
                        break;
                    case 4: //交通出行
                        switch (listId) {
                        case 0: //公交查询

                            break;
                        case 1: //火车查询
                            mylist.paint(g);
                            break;
                        case 2: //飞机查询
                            mylist.paint(g);
                            break;
                        }

                        break;
                    case 5:
                        textshow.paint(g);
                        break;
                    case 6:
                        textshow.paint(g);
                        break;
                    case 7:
                        textshow.paint(g);
                        break;
                    case 8:
                        textshow.paint(g);
                        break;
                    }

                    //drawTextShow(g, wmlinfo_text);
                    break;
                }
                break;
            case P_LOADER:
                paintloader(g);
                break;

            }
        } catch (Exception e) {
            long timenow = System.currentTimeMillis();
            while (System.currentTimeMillis() - timenow < 10000) { //10秒后退出
            }
            quitGame = true;
        }
    }

    //测试用
    boolean cartoonboolean = false;
    public final void run() {
        long starttime = 0;
        long timetaken = 0;
        try {
            while (!quitGame) {
                starttime = System.currentTimeMillis();
                urltimeCount++;
                switch (game_state) {
                case P_EXIT:

                    break;
                case P_LOAD:
                    if (timeCount >= 23) {
                        timeid = -1;
                    } else if (timeCount <= 0) {
                        timeid = 1;
                    }
                    timeCount = timeCount + timeid;

                    if (timeCount >= 23) {
                        imgNum = 0;
                         game_state = P_MENU;
                    }

//                    // 联网数据处理结束
//                    // 取到初始数据结束
//                    if (HttpData.userHash.containsKey("init")) {
//                        //清除 联网 数据
//                        HttpData.userHash.remove("init");
//                        game_state = P_MENU;
//                        // 速度测试
////                        cn.mobell.tool.HttpData.getInstance().readTimeTest("初始数据结束");
//
//                    }

                    break;
                case P_MENU:
                    tickerStepX++;
                    if (tickerStepX > WIDTH) {
                        tickerStepX = 0;
                    }
                    break;
                case P_TABLEFORM:

                    break;
                case P_LOADER:
                    timeCount++;
                    if (timeCount > loaderw) {
                        timeCount = 0;
                    }
                    break;
                }
                repaint();
                serviceRepaints();

                if (keydelay > 0) { //按键时间控制
                    keydelay--;
                }
                //垃圾回收
                System.gc();
                timetaken = System.currentTimeMillis() - starttime;

                if (timetaken < TIME_PER_FRAME) //确定游戏帧数
                    gameThread.sleep(TIME_PER_FRAME - timetaken);
//                if(cartoonboolean){
//                    System.out.println("^^^^^^^^^^^^^^^^^^^^^");
//                    httpcatoonbool = true;
//                }
            }
        } catch (Exception ex) {
            repaint();
            serviceRepaints();
        }

    }
    /**
      *连续按键控制
      *
     * */
    protected void keyRepeated(int keyCode) {
        keyPressed(keyCode);
    }
    /**
     *按键控制
     * 所有主线程中按键控制
     * */
    protected final void keyPressed(int keycode) { //

        key_press = true;
        this.key = keycode;
        if (keydelay == 0) {
            keydelay = 3;

            switch (game_state) {
            case P_EXIT:
                if (key == KEY_SOFTKEY1) {

                    quitGame = true;
                    midlet.exit();
                }
                if (key == KEY_SOFTKEY2) {
                    game_state = P_MENU;
                }

                break;

            case P_MENU:
                keyProcessMenu();
                break;
            case P_TABLEFORM:

                keyProcessTableForm();

                switch (table_state) {

                case TABLEFORM_LIST:
                    keyProcessTableForm_list();
                    break;
                case TABLEFORM_INPUT:
                    keyProcessTableForm_input();
                    break;
                case TABLEFORM_SHOW:
                    keyProcessTableForm_show();
                    break;
                }
                break;

            }

        }

    }
    /**
         *键释放
         *
     * */
    protected final void keyReleased(int keycode) { //
        keyRepeat = false;
        this.key = 0;
    }


    /**
     *重画
     *
     * */
    public final void repaintFrame(int time) {
        long PaintTime = System.currentTimeMillis();
        repaint();
        serviceRepaints();
        PaintTime = System.currentTimeMillis() - PaintTime;
        try {
            if (PaintTime < time)
                Thread.sleep(time - PaintTime);
            else
                Thread.sleep(0);
        } catch (Exception ex) {
        }
    }

    ////来电
    protected void hideNotify() {
    }

    protected void showNotify() {
    }


    /**
     *程序启动时,开机动画
     *posY 动画显示的Y坐标
     * */
    private void drawLoading(Graphics g, int posY) {

        g.setColor(0xffffff);

        g.fillRect(0, 100, WIDTH, HEIGHT);

        g.drawImage(logoImage, (WIDTH - logoImage.getWidth()) >> 1,
                    (HEIGHT - logoImage.getHeight()) / 2, 20);

        g.drawImage(loadImage[timeCount % 3], (WIDTH - loadImage[timeCount % 3].getWidth()) >> 1,  178, 20);
    }
    /******************************/
    /******* 画联网数据处理动画 *****/
    /******************************/

    public void setHttpcatoonbool(boolean _httpcatoonbool){
        this.httpcatoonbool = _httpcatoonbool;
    }
    private void drawHttpCatoon(Graphics g ) {
        g.setClip(0,0,240,320);
        if(httpcatoonbool){
            int httpcount = (urltimeCount / 4) % 4;
            System.out.println("httpcount = " + httpcount);
            g.drawImage(httpLoadImage[httpcount],
                        WIDTH   - httpLoadImage[httpcount].getWidth()-10,
                        10, 20);
             System.out.println("ddddddddddddddddddddddddddd = " + httpcount);
        }
    }
    //画载入
    int loaderx = 67;
    int loadery = HEIGHT - 26;
    int loaderw = 242;
    int loaderh = 26;
    int loadertempx = 26;

    private void paintloader(Graphics g) {

        g.setColor(0xffffff);

        g.fillRect(loaderx, loadery, timeCount, loaderh);

    }

    /**
       *统一背景
       *
     * */
    private void drawBG(Graphics g) {

        g.setColor(0xFFFFFF);
        g.fillRect(0, 0, WIDTH, HEIGHT);

        g.drawImage(bgtopImage, 0, 0, 20);

        g.drawImage(bgfootImage, (WIDTH - bgfootImage.getWidth()) >> 1,
                    HEIGHT - bgfootImage.getHeight(), 20);
        g.drawString("确定", 10, 302, 20);
        g.drawString("返回", 202, 302, 20);

        //
        drawHttpCatoon(g);
//        g.drawImage(buttemImage, 0,
//                    HEIGHT - buttemImage.getHeight(), 20);
//        g.drawImage(buttemImage, (WIDTH - buttemImage.getWidth()) ,
//                   HEIGHT - buttemImage.getHeight(), 20);
    }


    /**
     *   画九宫菜单
     *
     */
    private void paintMenu(Graphics g) {

        for (int r = 0; r < nrow; r++) {
            for (int c = 0; c < ncol; c++) { //
                g.drawImage(icons[r * 3 + c],
                            pointX[r * 3 + c],
                            pointY[r * 3 + c], 20);
            }
        }
        g.drawImage(selectImage, pointX[imgNum] + 12, pointY[imgNum] + 27,
                    20);
    }


    /**
     *   画滚动条菜单
     * str 所要显示的文字
     * stringLong 所显示文字的长度,当stringLong大于屏幕宽度时,滚动,否则居中
     */
    private void paintTicker(Graphics g, String str) {

        int stringLong = samllfont.stringWidth(str);

        g.setColor(0x000000);
        g.setClip(0, 29, WIDTH, HEIGHT);

        if (stringLong < WIDTH) {
            ticker_x = (WIDTH - stringLong) / 2;
        } else {
            ticker_x = WIDTH / 2 - tickerStepX;
        }

        g.drawString(str, ticker_x, ticker_y, 20);

    }



    /**
     *   画TableForm 通用背景
     *
     *
     */
    private void drawTableFormTabbar(Graphics g) {
        //画Tablebar工具条中 左右图标
        g.drawImage(arrawLImage, 0, table_y, 20);
        g.drawImage(arrawRImage, WIDTH - arrawRImage.getWidth(), table_y, 20);
        g.setClip(tabbarStarX, tabbarStarY, tabbarEndX, tabbarEndY);

        //画Tablebar工具条
        tabbarStateUPid = tabbarStateid;
        if (tabbarStateid > 8) {
            tabbarStateUPid = 0;
        } else if (tabbarStateid < 0) {
            tabbarStateUPid = 8;
        }
        g.drawImage(buttemImage,
                    tabbarStarX + tabbarStepX,
                    24, 20);
        //画Tablebar工具条中菜单
        g.setColor(0xffffff);
        for (int i = 0; i < mobileInfo.TabbarNames.length; i++) {

            g.drawString(mobileInfo.TabbarNames[i],
                         tabbarX[i],
                         30, 20);
        }
        if (tabbarStateid == tabbarStateUPid) {
            g.setColor(0x000000);
            g.drawString(mobileInfo.TabbarNames[tabbarStateUPid],
                         tabbarX[tabbarStateUPid],
                         30, 20);

        }

    }


    /**
     *      //画TableForm  List菜单
     *
     *
     */
    protected void drawTableFormList(Graphics g) {

        int y = 75;
        int setpy = 26;
        g.setClip(0, 0, WIDTH, HEIGHT);

        g.drawImage(listselectImage, 0,
                    y + setpy * (listId) - 3,
                    20);

        g.setColor(0x000000);

        for (int i = 0; i < mobileInfo.getTabbar(tabbarStateid).length; i++) {

            g.drawImage(arrawPImage, 5,
                        y + setpy * (i), 20);

            g.drawString(mobileInfo.getTabbar(tabbarStateid)[i], 27,
                         y + setpy * (i), 20);
        }

    }

    /**
     *    ////画list页面查询菜单
     *
     *
     */
    protected void drawList(Graphics g, String[] str, int y) {

        g.setClip(0, 0, WIDTH, HEIGHT);
        g.setColor(0x000000);
        for (int i = 0; i < str.length; i++) {
            g.drawString(str[i], 3, text_y + y + stepFontHight * (i), 20);
        }
    }

    /**
     *  九宫菜单页面按键控制
     *
     *
     */
    private void keyProcessMenu() {
        if (key == KEY_UP_ARROW) {
            imgNum--;
            if (imgNum < 0) {
                imgNum = 8;
            }
        }
        if (key == KEY_DOWN_ARROW) {
            imgNum++;
            if (imgNum > 8) {
                imgNum = 0;
            }
        }
        if (key == KEY_LEFT_ARROW) {
            if (imgNum != 2 && imgNum != 1) {
                imgNum = imgNum - 3;
                if (imgNum < 0) {
                    imgNum = 8;
                }
            } else
                imgNum = imgNum + 5;
        }
        if (key == KEY_RIGHT_ARROW) {

            if (imgNum != 6 && imgNum != 7) {
                imgNum = imgNum + 3;
                if (imgNum > 8) {
                    imgNum = 0;
                }
            } else
                imgNum = imgNum - 5;
        }
        if (key == KEY_SOFTKEY1 || key == KEY_SOFTKEY3) {
            game_state = P_TABLEFORM;
            table_state = TABLEFORM_LIST;
        }
        if (key == KEY_SOFTKEY2) {
            game_state = P_EXIT;
        }
    }
    /**
        *  TableForm  页面 左右选择时 按键控制
        *  优先级最大
        *
     */
    private void keyProcessTableForm() {

        if (key == KEY_LEFT_ARROW) {
            table_state = TABLEFORM_LIST;
            listId = 0;
            tabbarStateid--;
            if (tabbarStateid < 0) {
                tabbarStateid = 8;
            }
            tabbarStepX = tabbarStepX - bgstepX;

            if (tabbarStarX + tabbarStepX <= 0) {
                tabbarStepX = 0;
                int vvv;
                vvv = tabbarX[8];
                tabbarX[8] = tabbarX[0];
                tabbarX[0] = tabbarX[1];
                tabbarX[1] = tabbarX[2];
                tabbarX[2] = tabbarX[3];
                tabbarX[3] = tabbarX[4];
                tabbarX[4] = tabbarX[5];
                tabbarX[5] = tabbarX[6];
                tabbarX[6] = tabbarX[7];
                tabbarX[7] = vvv;
            }

        }
        if (key == KEY_RIGHT_ARROW) {
            table_state = TABLEFORM_LIST;
            listId = 0;
            tabbarStateid++;
            if (tabbarStateid > 8) {
                tabbarStateid = 0;
            }
            tabbarStepX = tabbarStepX + bgstepX;

            if (tabbarStepX > 2 * bgstepX) { //3 * bgstepX
                tabbarStepX = 2 * bgstepX;
                strstepX = strstepX + bgstepX;
                int xxx;
                xxx = tabbarX[0];
                tabbarX[0] = tabbarX[8];
                tabbarX[8] = tabbarX[7];
                tabbarX[7] = tabbarX[6];
                tabbarX[6] = tabbarX[5];
                tabbarX[5] = tabbarX[4];
                tabbarX[4] = tabbarX[3];
                tabbarX[3] = tabbarX[2];
                tabbarX[2] = tabbarX[1];
                tabbarX[1] = xxx;
            }
        }

    }

    /**
     *  列表页面 按键控制
     *  KEY_SOFTKEY2  返回上级菜单
     *
     * tabbarStateid  9大菜单 id
     * listId         9大菜单下小菜单列表 id
     *
     */
    private void keyProcessTableForm_list() {

        if (key == KEY_UP_ARROW) {

            listId--;
            if (listId < 0) {
                listId = mobileInfo.getTabbar(tabbarStateid).length - 1;
            }
        }
        if (key == KEY_DOWN_ARROW) {
            listId++;
            if (listId > mobileInfo.getTabbar(tabbarStateid).length - 1) {
                listId = 0;
            }

        }

        if (key == KEY_SOFTKEY1 || key == KEY_SOFTKEY3) {

            switch (tabbarStateid) {
            case 0: //百度
                switch (listId) {
                case 0: //百宝知道
                case 1: //百宝百科
                case 2: //百宝英汉
                case 3: //百宝汉英
                case 4: //全文翻译
                    textbox = new MyTextBox(display, this,
                                            mobileInfo.Tarry0[listId][1]);
                    break;
                }
                table_state = TABLEFORM_INPUT;
                break;

            case 1: //金融
                switch (listId) {
                case 0: ////大盘行情
                    String temp = "大盘行情"; //联网取大盘行情数据
                    textshow = new Mytextshow(display, this, temp);
                    table_state = TABLEFORM_SHOW; //直接跳到页面
                    break;
                case 1: //个股查询
                case 2: //基金查询
                    textbox = new MyTextBox(display, this,
                                            mobileInfo.Tarry1[listId][1]);
                    table_state = TABLEFORM_INPUT;
                    break;
                case 3: //外汇价格
                    String[][] money = (String[][])this.getLinkContent(tabbarStateid,
                            listId, "外汇价格");
                    mylist = new MyList(display, this, money, midlet);
                    table_state = TABLEFORM_INPUT;
                    break;
                }

                break;
            case 2: //彩票乐透
                switch (listId) {
                case 0: //体彩getLinkContent
                    String[][] caipiao = (String[][])this.getLinkContent(tabbarStateid, listId, "体彩");

                    mylist = new MyList(display, this, caipiao, midlet);
                    table_state = TABLEFORM_INPUT;

                    break;
                case 1: //福彩

                    String temp = "福彩行情"; //联网取福彩行情数据
                    textshow = new Mytextshow(display, this, temp);
                    table_state = TABLEFORM_SHOW; //直接跳到页面

                    break;
                }
                break;
            case 3: //生活娱乐

                break;
            case 4: //交通出行
                switch (listId) {
                case 0: //公交查询

                    textbox = new MyTextBox(display, this, "选择城市");

                    table_state = TABLEFORM_INPUT;

                    break;
                case 1: //火车查询

                    break;
                case 2: //飞机查询

                    break;
                }
                break;
            case 5: //生活工具
                switch (listId) {

                case 1: // 常用号码
                    //getOnlyContent

                    String temp = (String)this.getOnlyContent( tabbarStateid, listId, "常用号码");; //联网取福彩行情数据
                    textshow = new Mytextshow(display, this, temp);
                    table_state = TABLEFORM_SHOW; //直接跳到页面

                    break;
                case 0:
                case 2:
                case 3:
                case 4:
                case 5:
                    textbox = new MyTextBox(display, this,
                                            mobileInfo.Tarry5[listId][1]);
                    table_state = TABLEFORM_INPUT;
                    break;
                }

                break;
            case 6:
                switch (listId) {

                case 0: // 奇异梦解
                    textbox = new MyTextBox(display, this,
                                            mobileInfo.Tarry6[listId][1]);
                    table_state = TABLEFORM_INPUT;
                    break;
                case 1: //每日星运
                    String temp = "星运详情"; //联网取每日星运数据
                    textshow = new Mytextshow(display, this, temp);
                    table_state = TABLEFORM_SHOW; //直接跳到页面

                    break;
                }
                break;
            case 7: //3G快车

                break;
            case 8: //帮助

                break;
            }

        }
        if (key == KEY_SOFTKEY2) {

            game_state = P_MENU;

        }
    }
    /**
     * 输入款输入字符后 按键控制
     * 链接网络取得数据 然后转入 TABLEFORM_SHOW 最终显示结果页面
     * tabbarStateid  9大菜单
     * listId         9大菜单下小菜单列表
     */
    private void keyProcessTableForm_input() {

        if (key == KEY_SOFTKEY2) {
            showIs = false;
            table_state = TABLEFORM_LIST;
        }
        switch (tabbarStateid) {

        case 0: //百度
            switch (listId) {
            case 0: //百宝知道
                if ((key == KEY_SOFTKEY3
                || key == KEY_SOFTKEY1) && showIs) {
                   //当输入框输入数据后,按左软键进行联网查询
                   cartoonboolean=true;
                    String[][] biadu = (String[][])this.getMuchContent(textbox.
                            m_text, 0, 0, "baidu");
                    mylist = new MyList(display, this, biadu, midlet);
                    table_state = TABLEFORM_SHOW;
                    cartoonboolean=false;

                }
                if ((key == KEY_SOFTKEY3
                || key == KEY_SOFTKEY1) && showIs == false) { //按确定键,输入框跳入输入界面
                    showIs = true;
                    textbox.keyPress(key);
                }
                break;
            case 1: //百宝百科
            case 2: //百宝英汉
            case 3: //百宝汉英
            case 4: //全文翻译
                if ((key == KEY_SOFTKEY3
                || key == KEY_SOFTKEY1)&& showIs) {
                    String temptexbox = (String)this.getSingleContent(textbox.
                            m_text,
                            tabbarStateid, listId, "baoddaf");
                    textshow = new Mytextshow(display, displayable, temptexbox);
                    table_state = TABLEFORM_SHOW;
                }
                if ((key == KEY_SOFTKEY3
                || key == KEY_SOFTKEY1)&& showIs == false) { //按确定键,输入框跳入输入界面
                    showIs = true;
                    textbox.keyPress(key);

                }

                break;
            }
            break;
        case 1://金融
            switch (listId) {
            case 0: ////大盘行情

                break;
            case 1: //个股查询
            case 2: //基金查询
                if ((key == KEY_SOFTKEY3
                || key == KEY_SOFTKEY1) && showIs) {
                String temptexbox = (String)this.getSingleContent(textbox.
                        m_text,tabbarStateid, listId, "baoddaf");
                textshow = new Mytextshow(display, displayable, temptexbox);
                table_state = TABLEFORM_SHOW;
            }
            if ((key == KEY_SOFTKEY3
                || key == KEY_SOFTKEY1) && showIs == false) { //按确定键,输入框跳入输入界面
                showIs = true;
                textbox.keyPress(key);

            }

                break;
            case 3: //外汇价格


                break;
            }


            break;
        case 2:

            break;
        case 3:

            break;
        case 4:

            break;
        case 5://生活工具

            switch(listId){

            case 1://常用号码
                break;
            case 0:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
                if ((key == KEY_SOFTKEY3
                     || key == KEY_SOFTKEY1) && showIs) {
                    String temptexbox = (String)this.getSingleContent(textbox.
                            m_text, tabbarStateid, listId, "生活工具");
                    textshow = new Mytextshow(display, displayable, temptexbox);
                    table_state = TABLEFORM_SHOW;
                }
                if ((key == KEY_SOFTKEY3
                     || key == KEY_SOFTKEY1) && showIs == false) { //按确定键,输入框跳入输入界面
                    showIs = true;
                    textbox.keyPress(key);

                }

                break;
            }

            break;
        case 6://星座
            switch(listId){

                case 0://解梦
                    if ((key == KEY_SOFTKEY3
                         || key == KEY_SOFTKEY1) && showIs) { //当输入框输入数据后,按左软键进行联网查询

                        String[][] biadu = (String[][])this.getMuchContent(textbox.
                                m_text, 0, 0, "baidu");
                        mylist = new MyList(display, this, biadu, midlet);
                        table_state = TABLEFORM_SHOW;
                    }
                    if ((key == KEY_SOFTKEY3
                         || key == KEY_SOFTKEY1) && showIs == false) { //按确定键,输入框跳入输入界面
                        showIs = true;
                        textbox.keyPress(key);
                    }

                    break;
                case 1:

                    break;
            }
            break;
        case 7:

            break;
        case 8:

            break;
        }
    }
    /**
        * 最终文本显示页面 按键控制
        *  KEY_SOFTKEY2  返回上级菜单
        *
        * 当文字的长度大于一屏时;通过上下按键翻滚页面
        * tabbarStateid  9大菜单
        * listId         9大菜单下小菜单列表
        * rowid  联网取得的文本的行数
        * line   一屏可显示的行数
     */
    private void keyProcessTableForm_show() {

        if (key == KEY_SOFTKEY2) {
            showIs = false;

            if(tabbarStateid == 0){
                table_state = TABLEFORM_INPUT;
            }else {
                table_state = TABLEFORM_LIST;
            }
        }

        if (rowid > line) {
            if (key == KEY_UP_ARROW) {

                showId--;
                if (showId < 0) {
                    showId = 0;
                }
            }
            if (key == KEY_DOWN_ARROW) {
                showId++;
                if (showId > rowid - line) {
                    showId = rowid - line;
                }

            }
        } else showId = 0;

        switch (tabbarStateid) {

        case 0: //百度
            if (listId==0) { //百度知道
                mylist.keyPress(key);
            }
            break;
        case 1:
            break;
        case 2:

            break;
        case 3:

            break;
        case 4:

            break;
        case 5:

            break;
        case 6://星座
            if(listId==0){//解梦
                mylist.keyPress(key);
            }
            break;
        case 7:

            break;
        case 8:

            break;
        }

    }

    /**
     * 读取图片的方法
     * @param  read image
     * */
    private Image loadImage(String imageName) {
        Image img = null;
        try {
            img = Image.createImage(imageName);
        } catch (Exception ex) {
        }
        return img;
    }

    public void commandAction(Command command, Displayable displayable) {

    }


    //画百度知道显示页面


    public void drawHttpLoding(Graphics g) {
        g.drawString("联网提示", 10, HEIGHT_TEMP - 20, 20);
    }

    /**
     *
     * @param _source String 提交的文本框内容
     * @param listId int 当项目id
     * @param _storageType String 临时存储Key
     * @return String 返回 无列表 内容
     */
    private String getSingleContent(String _source, int _tableId, int _listId,
                                    String _storageType) {
        // 提交中文 URL  转码
        String contentStr = "";
        String temptexbox = cn.mobell.tool.URLEncoder.encode(_source, "UTF-8");
        String[][] array_Tarry = (String[][]) mobileInfo.getTarry(_tableId);
        String baiduUrl = array_Tarry[_listId][4] + "&" +
                          array_Tarry[_listId][3] + "&" +
                          array_Tarry[_listId][2] + "=" + temptexbox;
        //midlet.initHttp(baiduUrl, _storageType);
        ThreaHttp.getInstance().initHttp(baiduUrl, _storageType);
        while (true) {
            if (HttpData.userHash.containsKey(_storageType)) {
                Vector vec_data = (Vector) HttpData.userHash.get(_storageType);
                System.out.println("baidu vec_data.size" + vec_data.size());
                for (int i = 0; i < vec_data.size(); i++) {
                    //原来用数据类,现在用书组
                    //数组信息:mlTag; WXL 标签,xmlText;  内容,newline; 是否换行,pageurl; 内容对应的URL
                    String[] wmlinfo_obj = (String[]) vec_data.elementAt(i);
                    contentStr = contentStr + wmlinfo_obj[1];
                }
                //清除 联网 数据
                vec_data.removeAllElements();
                HttpData.userHash.remove(_storageType);
                break;
            }
        }
        //自己判断无数据处理
        return contentStr;
    }

    /**
     *
     * @param _source String 提交的文本框内容
     * @param listId int 当项目id
     * @param _storageType String 临时存储Key
     * @return String 返回 列表 内容
     */
    private String[][] getMuchContent(String _source, int _tableId, int _listId,
                                      String _storageType) {
        // 提交中文 URL  转码
        System.out.println("##$$#$启动联网动画");
        String[][] contentStr = null; //标题对应的url

        String temptexbox = cn.mobell.tool.URLEncoder.encode(_source, "UTF-8");
        String[][] array_Tarry = (String[][]) mobileInfo.getTarry(_tableId);

        String baiduUrl = array_Tarry[_listId][4] + "&" +
                          array_Tarry[_listId][3] + "&" +
                          array_Tarry[_listId][2] + "=" + temptexbox;
        //midlet.initHttp(baiduUrl, _storageType);
        ThreaHttp.getInstance().initHttp(baiduUrl, _storageType);
        while (true) {
            if (HttpData.userHash.containsKey(_storageType)) {
                Vector vec_data = (Vector) HttpData.userHash.get(_storageType);
                System.out.println("baidu vec_data.size" + vec_data.size());

                contentStr = new String[vec_data.size()][2];

                for (int i = 0; i < vec_data.size(); i++) {
                    //原来用数据类,现在用书组
                    //数组信息:mlTag; WXL 标签,xmlText;  内容,newline; 是否换行,pageurl; 内容对应的URL
                    String[] wmlinfo_obj = (String[]) vec_data.elementAt(i);
                    contentStr[i][0] = wmlinfo_obj[1];
                    contentStr[i][1] = wmlinfo_obj[3];
                }

                //清除 联网 数据
                vec_data.removeAllElements();
                HttpData.userHash.remove(_storageType);
                break;
            }
        }
        //自己判断无数据处理
        //httpcatoonbool=false;
        return contentStr;
    }
    /**
     * 直接提交URL 取得数据
     * @param listId int 当项目id
     * @param _storageType String 临时存储Key
     * @return String 返回 无列表 内容
     */
    private String getOnlyContent( int _tableId, int _listId, String _storageType) {
        // 提交中文 URL  转码
        String contentStr = "";

        String[][] array_Tarry = (String[][]) mobileInfo.getTarry(_tableId);
        String baiduUrl = array_Tarry[_listId][4] + "&" +  array_Tarry[_listId][3]  ;
        ThreaHttp.getInstance().initHttp(baiduUrl, _storageType);
        while (true) {
            if (HttpData.userHash.containsKey(_storageType)) {
                Vector vec_data = (Vector) HttpData.userHash.get(_storageType);
                for (int i = 0; i < vec_data.size(); i++) {
                    //原来用数据类,现在用书组
                    //数组信息:mlTag; WXL 标签,xmlText;  内容,newline; 是否换行,pageurl; 内容对应的URL
                    String[] wmlinfo_obj = (String[]) vec_data.elementAt(i);
                    contentStr = contentStr + wmlinfo_obj[1];
                }
                //清除 联网 数据
                vec_data.removeAllElements();
                HttpData.userHash.remove(_storageType);
                break;
            }
        }
        //自己判断无数据处理
        return contentStr;
    }
    /**
     * 直接提交URL 取得数据
     * @param listId int 当项目id
     * @param _storageType String 临时存储Key
     * @return String 返回 列表 内容
     */
    private String[][] getLinkContent( int _tableId, int _listId, String _storageType) {
        // 提交中文 URL  转码
        String[][] contentStr = null;
        //标题对应的url
        String[][] array_Tarry = (String[][]) mobileInfo.getTarry(_tableId);
        String baiduUrl = array_Tarry[_listId][4] + "&" + array_Tarry[_listId][3]  ;

        System.out.println("联网URL:"+baiduUrl);
        ThreaHttp.getInstance().initHttp(baiduUrl, _storageType);
        while (true) {
            if (HttpData.userHash.containsKey(_storageType)) {
                Vector vec_data = (Vector) HttpData.userHash.get(_storageType);
                System.out.println("baidu vec_data.size" + vec_data.size());

                contentStr = new String[vec_data.size()][2];

                for (int i = 0; i < vec_data.size(); i++) {
                    //原来用数据类,现在用书组
                    //数组信息:mlTag; WXL 标签,xmlText;  内容,newline; 是否换行,pageurl; 内容对应的URL
                    String[] wmlinfo_obj = (String[]) vec_data.elementAt(i);
                    contentStr[i][0] = wmlinfo_obj[1];
                    contentStr[i][1] = wmlinfo_obj[3];
                }
                //清除 联网 数据
                vec_data.removeAllElements();
                HttpData.userHash.remove(_storageType);
                break;
            }
        }
        //自己判断无数据处理
        return contentStr;
    }

    private void jbInit() throws Exception {
    }
}







  • 大小: 15.1 KB
分享到:
评论
3 楼 goontosoon 2010-05-07  
楼主的注释写很详细,对新手应该有帮助
2 楼 minzaipiao 2010-05-05  
switch语句用的太多了
1 楼 atgoingguoat 2010-04-27  
WTK 自己知道下载吧。

相关推荐

    精通JBuilder2006源代码

    源代码中的项目文件可以展示如何配置工程,设置编译选项,以及如何利用JBuilder的自动构建功能。 2. **界面设计**:JBuilder2006内置了可视化组件库,允许开发者通过拖放方式设计用户界面。通过源代码,我们可以...

    7个Java小游戏源代码

    7个Java小游戏源代码 解压密码是:yykings

    大鱼吃小鱼JAVA版本源代码

    "大鱼吃小鱼"是一款经典的休闲游戏,其JAVA版本的源代码为我们提供了一个学习和研究JAVA编程在游戏开发中的应用的机会。以下是对这个项目的一些关键知识点的详细解析: 1. **JAVA编程语言**:本项目是用JAVA语言...

    扫雷游戏Java源代码

    扫雷游戏Java源代码扫雷游戏Java源代码扫雷游戏Java源代码扫雷游戏Java源代码扫雷游戏Java源代码扫雷游戏Java源代码扫雷游戏Java源代码扫雷游戏Java源代码扫雷游戏Java源代码扫雷游戏Java源代码扫雷游戏Java源代码...

    基于JAVA的网上在线考试题库管理系统源代码

    总的来说,基于JAVA的网上在线考试题库管理系统源代码不仅展示了JAVA在Web开发中的强大能力,也体现了软件工程的设计原则。通过深入学习和理解这个源代码,开发者不仅可以掌握网上考试系统的实现细节,也能提升自己...

    java项目开发10例源代码

    【Java项目开发10例源代码】集合涵盖了Java编程在多个领域的应用,为开发者提供了丰富的学习资源。这些实例包括桌面应用程序、网页设计以及企业级项目,甚至还有手游开发的源码,展示了Java语言的广泛适应性和灵活性...

    java音乐播放器+源代码

    总之,"java音乐播放器+源代码"项目不仅提供了一个实用的音乐播放工具,更是一个学习和提升Java编程技能的宝贵资源。无论是初学者还是有经验的开发者,都可以从中受益,深入理解Java多媒体处理、GUI编程以及软件工程...

    java源代码 学生管理系统

    《Java源代码实现的学生管理系统详解》 学生管理系统是软件工程中的一个典型应用,它主要用于管理教育机构中的学生信息,包括录入、查询、修改、删除等操作。本系统采用Java编程语言进行开发,充分展示了Java在实际...

    json转java源代码工具

    每次做android的时候都会有很多json数据,而且里面的属性还要一个一个写在类里面,很麻烦,然后做了这个json转java源代码的工具。 由于是java swing 写的,必须要java环境才能运行哦。 没有要资源分,免费下载。 ...

    java俄罗斯方块源代码

    "Java俄罗斯方块源代码"是一个适合新手学习的项目,它将帮助初学者理解基础的编程概念,特别是针对游戏开发的逻辑和算法。下面,我们将深入探讨这个项目中的关键知识点。 1. **Java基础知识**: - **类与对象**:...

    java词法分析器源代码

    总之,这个"java词法分析器源代码"提供了一个研究和学习词法分析技术的实例,对于想要了解编译原理或开发相关工具的Java开发者来说,这是一个宝贵的学习资源。通过阅读和分析"SynEdit"的源代码,我们可以了解到如何...

    minecraft源代码亲测可运行

    通过实际运行和分析源代码,开发者不仅可以学习到Java编程和游戏开发的专业知识,还能领略到软件工程的实践智慧。无论你是出于兴趣还是专业需求,投身于这个源代码的世界都将是一次富有挑战和收获的旅程。

    Apk 反编译成Java源代码工具

    本篇文章将详细介绍如何使用"Apk 反编译成Java源代码工具"来获取APK中的源码。 首先,我们需要了解反编译的基本概念。反编译是将已编译的二进制代码转换回接近原始源代码的过程。在Android世界里,APK中的代码主要...

    Java仿QQ聊天程序源代码

    Java仿QQ聊天程序源代码 HAHA CHAT Java仿QQ聊天程序源代码,使用了比较多的图片资源 ,因此程序比较大,初步完成的效果,文件夹结构还有些乱。这个聊天程序有着QQ一样的隐藏窗体,程序有服务端和QQ登录端,同时还有...

    java实现搜索引擎源代码

    java实现搜索引擎源代码,非常详细 赶紧下

    销售管理系统源代码 Java

    Tomcat下载地址:http://tomcat.apache.org/download-55.cgi 安装完要配置本机环境:我的电脑属性—高级—环境变量—系统变量—新建—变量名取JAVA_HOME—变量值取JDK安装路径;JDK百度搜索或直接在SUN官网下安装完...

    Java实现邮件客户端源代码

    大家好,前几天我刚发过Java邮件客户端的JAR包,现在把源程序给补上,功能我就不多说了,只是给提醒下方法:由于我单独调用了两个JAR包(放在JavaMail API文件夹下的),所以大家首先要在项目里点——&gt; 库 ——&gt;右键...

    搜索引擎源代码用java、jsp编写的搜索引擎源代码

    本项目提供了一套用Java和JSP(JavaServer Pages)编写的搜索引擎源代码,这对于学习和理解搜索引擎的工作原理,以及Java后端开发与Web交互有极大的帮助。下面我们将深入探讨相关知识点。 首先,Java是一种广泛使用...

    神经网络算法 java 源代码

    神经网络算法 java 源代码神经网络算法 java 源代码神经网络算法 java 源代码

    JAVA编写的计算器程序源代码

    JAVA编写的打砖块程序源代码 ; JAVA编写的俄罗斯方块程序源代码 ; JAVA编写的计算器程序源代码 ; JAVA编写的看图软件程序源代码 ; JAVA编写的螃蟹过街程序源代码 ; JAVA编写的拼图---键盘操作程序源代码 ; JAVA编写...

Global site tag (gtag.js) - Google Analytics