Garrey's Tech Blog(巴萨之心)
This is Garrey's tech blog,it's mainly about programming with java!
<<  J2ME 记录管理存储  |  返回首页  |  正则表达式基础知识  >>


J2ME手机电话本

我用J2ME写了个手机电话本的程序供大家交流学习。

 下载点这里
以下是对用到的类的介绍:
1 PhoneTest.java
midlet类,拥有一个转发视图的控制器,在初始化时创建控制器
 private static UIController controller;
 protected void startApp() throws MIDletStateChangeException {
  controller=new UIController(this);
  controller.init();
 }
2  PhoneRecordStore.java
封装了对电话本RMS操作的方法
    //增加记录
    public int addPhone(PhoneItem item) {                  
                try {
                    this.openPhone();
                    byte[] data=item.getBytes();
                    int id=phone.getNextRecordID();
                 int rec =phone.addRecord(data,0,data.length);
                 this.closePhone();
                 return id;
                } catch (RecordStoreException ex) { }
        return -1;
    }
    //更新记录
    public void updatePhone(PhoneItem item){
 ...
    }
    //访问一条记录
    public PhoneItem getPhone(int id){
 ...
    }
    //删除一条记录
    public void deletePhone(int id){
 ...
    }
    //访问所有记录
    public Vector getPhones(){
 ...
    } 
这个类内部还创建了一个简单比较器内部类
    private class InnerComparator implements RecordComparator{
        public int compare(byte[] rec1, byte[] rec2){
            if(rec1.length>rec2.length)
                return FOLLOWS;
            else if(rec1.length                return PRECEDES;
            else
                return EQUIVALENT;
        }
    }   
3  UIController.java
控制器类,拥有所有视图的应用,负责视图的转发   
public void handleEvent( int eventID,Object[] args);
方法来完成监听器推出来的事件,设置当前视图
内部类EventID定义了所有的事件。
4 视图类
视图类包括view目录下的所有类      
这些类都定义了内部监听器类,监听器监听所有Command事件,并把事件响应推出来让控制器处理
    PhoneEdit视图的监听器:
    private class PhoneEditListener implements CommandListener{
     public void commandAction(Command command, Displayable disp){
      if(command==BACK_COMMAND){
       controller.handleEvent(UIController.EventID.EVENT_EDIT_BACK,null);
             }else if(command==SAVE_COMMAND){
                 String name=nameField.getString();
                 String phone=phoneField.getString();
                 if((name==null||name.equals(""))||(phone==null||phone.equals(""))){
                     return;
                 }
               
                 item.setName(name);
                 item.setPhonenum(phone);
          Object[] args={item};
                  controller.handleEvent(UIController.EventID.EVENT_EDIT_SAVE,args);                                     
      }//end else
     }
    }//end inner class
5  PhoneItem.java
 plain ordinary java object,存储一条电话记录,不多说了
 
  






由 garrey 发表于  11:56 引用 (1)