课外天地 李树青学习天地清心茶舍 → [讨论]J2ME小程序——电话本


  共有17623人关注过本帖树形打印复制链接

主题:[讨论]J2ME小程序——电话本

帅哥哟,离线,有人找我吗?
tonydark
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:9 积分:506 威望:0 精华:0 注册:2008/9/19 7:54:43
[讨论]J2ME小程序——电话本  发帖心情 Post By:2008/10/1 20:29:40 [只看该作者]

//程序入口//

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;


public class Job extends MIDlet {

    public static Job instance;
    private MainScreen displayable = new MainScreen();

    //构造函数//
    public Job() {
        instance = this;
    }

    public void startApp() {
        Display.getDisplay(this).setCurrent(displayable);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public static void quitApp() {
        instance.destroyApp(true);
        instance.notifyDestroyed();
        instance = null;
    }
}

//主界面//

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.List;


public class MainScreen extends List implements CommandListener {

    private Command CMDview,  CMDadd,  CMDedit,  CMDdelete;
    private Alert alert;
    public EditForm editForm;
    private DataManager datamanager;
    public Hashtable getchange,  table;


    public MainScreen() {
        super("                                电话本", Choice.IMPLICIT);

        listItem();
        CMDview = new Command("查看", Command.BACK, 1);
        CMDadd = new Command("添加", Command.OK, 1);
        CMDedit = new Command("编辑", Command.OK, 1);
        CMDdelete = new Command("删除", Command.OK, 1);

        this.addCommand(CMDview);
        this.addCommand(CMDadd);
        this.addCommand(CMDedit);
        this.addCommand(CMDdelete);

        this.setCommandListener(this);
    }

    public void commandAction(Command c, Displayable display) {
        int index = this.size();
        if (c == CMDview) {
            if (index <= 0) {
                this.showAlertNoInfor("对不起,没有信息......");
            } else {
                showInfor("查看");
                editForm.removeCommand(editForm.CMD_OK);
            }
        } else if (c == CMDadd) {
            addListItem();
        } else if (c == CMDedit) {
            if (index <= 0) {
                this.showAlertNoInfor("对不起,没有信息可以编辑");
            } else {   showInfor("编辑");   }
        } else if (c == CMDdelete) {
            if (index <= 0) {
                this.showAlertNoInfor("对不起,没有信息可以被删除");
            } else {
                deleteListItem();
            }
        }
    }

    private void showAlertNoInfor(String ale) {
        alert = new Alert("                                通知");
        alert.setType(AlertType.INFO);
        alert.setTimeout(1000);
        alert.setString(ale);
        Display.getDisplay(Job.instance).setCurrent(alert);
    }

    private void showInfor(String title) {
        editForm = new EditForm(title);
        int index = this.getSelectedIndex();
        String selected = this.getString(index);
        Vector value = (Vector) table.get(selected);

        editForm.TFname.setString((String) value.elementAt(0));
        editForm.TFmobile.setString((String) value.elementAt(1));
        editForm.TFtel.setString((String) value.elementAt(2));
        editForm.TFemail.setString((String) value.elementAt(3));
        editForm.TFaddress.setString((String) value.elementAt(4));
    }

    public void listItem() {
        datamanager = null;
        datamanager = DataManager.getDataManage();
        if (table == null) {                               //
            table = datamanager.getStart();      //
            getchange = table;                        //这部分代码可删除,只是为了测试方便
        } else {                                             //
            table = getchange;                        //
        }                                                      //
        Enumeration enu = table.keys();
        while (enu.hasMoreElements()) {
            String key = (String) enu.nextElement();
            Vector value = (Vector) table.get(key);
            this.append((String) value.elementAt(0), null);
        }
    }

    private void deleteListItem() {
        int num = this.getSelectedIndex();
        this.getchange.remove(this.getString(num));
        this.delete(num);
    }

    private void addListItem() {
        editForm = new EditForm("添加");
    }
}

//编辑窗口//

import java.util.Vector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;


public class EditForm extends Form implements CommandListener {

    public TextField TFname,  TFmobile,  TFtel,  TFemail,  TFaddress;
    public Command CMD_OK,  CMD_BACK;
    public MainScreen showMainScreen;
    private DataManager data = null;

    public EditForm(String operation) {
        super(operation);

        CMD_BACK = new Command("返回", Command.BACK, 1);
        CMD_OK = new Command("确定", Command.OK, 1);

        TFname = new TextField("姓名", "", 8, TextField.ANY);
        TFmobile = new TextField("手机", "", 10, TextField.NUMERIC);
        TFtel = new TextField("电话", "", 10, TextField.NUMERIC);
        TFemail = new TextField("邮箱", "", 10, TextField.EMAILADDR);
        TFaddress = new TextField("地址", "", 20, TextField.ANY);

        this.addCommand(CMD_OK);
        this.addCommand(CMD_BACK);

        this.append(TFname);
        this.append(TFmobile);
        this.append(TFtel);
        this.append(TFemail);
        this.append(TFaddress);

        this.setCommandListener(this);
        Display.getDisplay(Job.instance).setCurrent(this);
    }

    public void commandAction(Command c, Displayable display) {
        if (c == CMD_OK) {
            addData();
            showMainScreen = new MainScreen();
            Display.getDisplay(Job.instance).setCurrent(showMainScreen);
        } else if (c == CMD_BACK) {
            showMainScreen = new MainScreen();
            Display.getDisplay(Job.instance).setCurrent(showMainScreen);
        }
    }

    private void addData() {
        data = new DataManager();
        data = DataManager.getDataManage();
        data.vector = null;
        data.vector = new Vector(10);
        data.vector.addElement(TFname.getString());
        data.vector.addElement(TFmobile.getString());
        data.vector.addElement(TFtel.getString());
        data.vector.addElement(TFemail.getString());
        data.vector.addElement(TFaddress.getString());
        data.table.put(TFname.getString(), data.vector);
    }
}

//数据//请注意由于数据是有代码直接添加的,因此对以下两个数据的部分操作会失败,使用者可以删除该部分的代码,对于用户自己添加的数据不会有影响//

import java.util.Hashtable;
import java.util.Vector;


public class DataManager {

    public static DataManager instance = null;
    public Vector vector;
    public Hashtable table;

    public DataManager() {
        vector = new Vector(10);
        table = new Hashtable(10);
    }

    public static DataManager getDataManage() {
        if (instance == null) {
            instance = new DataManager();
        }
        return instance;
    }

    public Hashtable getStart() {

        vector = null;                //Very Important//
        vector = new Vector(10);


        vector.addElement("CHEN");
        vector.addElement("1234567890");
        vector.addElement("666666");
        vector.addElement("123@qq.com");
        vector.addElement("University");
        table.put("CHEN", vector);
        vector = null;
        vector = new Vector(10);
        vector.addElement("LI");
        vector.addElement("12323");
        vector.addElement("888888");
        vector.addElement("163@qq.com");
        vector.addElement("Earth");
        table.put("LI", vector);

        return table;
    }
}

//有兴趣的可以将代码扩充完善。例如:欢迎界面,各种操作的提示信息等//

[此贴子已经被admin于2010-12-13 20:02:14编辑过]

 回到顶部