`
atgoingguoat
  • 浏览: 195174 次
  • 性别: 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内置了可视化组件库,允许开发者通过拖放方式设计用户界面。通过源代码,我们可以...

    Java 45款 游戏源代码

    这份"Java 45款 游戏源代码"的压缩包包含了一系列经典和有趣的Java游戏,对于学习Java编程、游戏开发或者寻求灵感的开发者来说,是一个极其宝贵的资源库。 首先,让我们逐一探讨这些游戏类型及其相关的编程知识点:...

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

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

    java api源代码

    Java API源代码是Java开发中的核心组成部分,它包含了Java标准库中的所有类和接口,这些类和接口构成了Java平台的基础。Sun Microsystems(后被Oracle收购)是Java的原始开发者,他们发布的源代码对于深入理解Java的...

    100个Java经典编程实例源代码

    100个Java经典编程实例源代码100个Java经典编程实例源代码100个Java经典编程实例源代码100个Java经典编程实例源代码100个Java经典编程实例源代码100个Java经典编程实例源代码

    JBuilder程序设计实例教程-源代码(下)

    《JBuilder程序设计实例教程-源代码(下)》是一份专为Java开发者准备的实践指导资料...通过深入研究和实践这些源代码,开发者不仅可以掌握JBuilder的使用,还能增强自己的Java编程能力,理解更深层次的软件工程实践。

    java做数据报表源代码

    本项目“java做数据报表源代码”聚焦于利用Java技术来处理和展示数据,特别是通过FusionCharts包来创建动态图表。 首先,我们来探讨Java在数据报表中的应用。Java可以通过各种方式处理数据,如JDBC(Java Database ...

    Java即时通信软件源代码

    源代码来源于网络,修改了源代码中错误若干,修复BUG若干,增加了两个类修改了界面。现仍有一处已发现的bug等待修复。单击在线好友发送信息,然后给下线好友留言,在给在线好友发送信息,或者查看修改个人设置,就...

    java俄罗斯方块源代码

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

    java词法分析器源代码

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

    JAVA麻将源代码

    【JAVA麻将源代码】是一个基于Java编程语言实现的麻将游戏项目。这个项目包含了实现麻将游戏逻辑所需的各类组件和文件,适合对Java编程和游戏开发感兴趣的开发者进行学习和研究。下面将详细阐述其中的关键知识点。 ...

    java版超级玛丽源代码

    Java版超级玛丽源代码是一个基于Java编程语言实现的著名游戏“超级玛丽”的克隆版本。这个项目展示了如何利用Java的图形库和编程技巧来构建一个交互式的2D游戏。通过研究这个源代码,开发者可以学习到游戏开发的基本...

    JAVA上百实例源码以及开源项目源代码

    Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。...

    minecraft源代码亲测可运行

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

    Java仿QQ聊天程序源代码

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

    小颖Java源代码反编译专家

    "小颖Java源代码反编译专家"是一款专为此目的设计的工具,它能够批量处理文件夹下的所有class文件,提高反编译的效率。 首先,我们来理解一下什么是Java字节码。Java程序在编译后不会生成像C++或C#那样的可执行文件...

    JAVA微信公众平台源代码(包含网页授权)

    JAVA微信公众平台源代码(包含网页授权) 关注、取消关注、自动回复、文本回复、图片回复、视频回复、音乐回复。 值得学习一下。

    Java毕业设计源代码

    Java毕业设计源代码是针对计算机科学与技术专业学生在毕业阶段进行的一项重要实践,它旨在检验和提升学生的编程技能、软件工程知识以及问题解决能力。Java作为一种广泛应用的面向对象编程语言,因其强大的跨平台特性...

    小颖Java源代码反编译专家 V1.4终极版.rar

    "小颖Java源代码反编译专家 V1.4终极版"是一款专为此目的设计的工具,它旨在帮助用户方便地进行Java反编译。 首先,我们需要了解Java的编译与运行机制。Java程序在开发时编写成源代码,通过Java编译器(javac)转换为...

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

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

Global site tag (gtag.js) - Google Analytics