您的位置:首页 > 编程语言 > Java开发

javaME中choicegroup没法选择...求各位大虾帮助

2011-03-15 16:30 381 查看
import javax.microedition.lcdui.ChoiceGroup;
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.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.rms.RecordComparator;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordFilter;
import javax.microedition.rms.RecordStore;

//可以删除,增加电话簿,并可以筛选,并按大小排序(没法选择其他项删除,只能第一个)
public class MIDlet8 extends MIDlet implements CommandListener,ItemStateListener,RecordFilter,RecordComparator{
private Command cmddel=new Command ("删除",Command.CANCEL,1);
private Command cmdadd=new Command ("添加",Command.SCREEN,1);
private Form frm=new Form("电话簿界面");
private ChoiceGroup cg=new ChoiceGroup("电话簿",ChoiceGroup.EXCLUSIVE);
private TextField tfphone=new TextField("输入电话","",20,TextField.PHONENUMBER);
private TextField tfsearch=new TextField("查找电话","",20,TextField.PHONENUMBER);
private Display dis;
private RecordStore rs=null;
private String searchstring="";

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  // TODO 自动生成方法存根

 }

 protected void pauseApp() {
  // TODO 自动生成方法存根

 }

 protected void startApp() throws MIDletStateChangeException {
  // TODO 自动生成方法存根
dis=Display.getDisplay(this);
dis.setCurrent(frm);
frm.addCommand(cmdadd);
frm.addCommand(cmddel);
frm.append(cg);
frm.append(tfphone);
frm.append(tfsearch);
frm.setCommandListener(this);
frm.setItemStateListener(this);

this.init();
 }
 
public void init(){
 cg.deleteAll();
 try{
  rs=RecordStore.openRecordStore("Rs8", true);
  RecordEnumeration re=rs.enumerateRecords(this,this, false);
  while(re.hasNextElement()){
   byte[] data=re.nextRecord();
   String str=new String (data);
   cg.append(str, null);
  }
 }catch(Exception ex){
  ex.printStackTrace();
 }
 finally {
  try{
   rs.closeRecordStore();
  }catch(Exception ex){
   ex.printStackTrace();
  }
 }
}
 public void commandAction(Command cmd, Displayable d1) {
  if(cmd==cmddel){
   int selectIndex =cg.getSelectedIndex();
   String str=cg.getString(selectIndex);
   try{
    rs=RecordStore.openRecordStore("Rs8", true);
    int nextRecord= rs.getNextRecordID();
      
    for(int i =1;i<nextRecord;i++){
     try{
     byte[] data=rs.getRecord(i);
     String phone=new String(data);
     if(phone .equals(str))
      rs.deleteRecord(i);
     }catch(Exception ex){
     }
    }
   }catch(Exception ex){
   }
   finally{
    try{
     rs.closeRecordStore();
     this.init();
    }catch(Exception ex){
     
    }
   }
  }
  else if(cmd==cmdadd){
    try{
    rs=RecordStore.openRecordStore("Rs8", true);
    
    String phone=tfphone.getString();
    byte[] data=phone.getBytes();
    rs.addRecord(data, 0, data.length);
   }catch(Exception ex){
   }
   
   finally {
    try{
     rs.closeRecordStore();
     tfphone.setString("");
     this.init();
    }catch(Exception ex){
     
    }
   }
   }
 }

 public void itemStateChanged(Item arg0) {
  // TODO 自动生成方法存根
  searchstring=tfsearch.getString();
  this.init();
 }

 public boolean matches(byte[] arg0) {
  // TODO 自动生成方法存根
  String str=new String(arg0);
  if(str.startsWith(searchstring))
   return true;
  return false;
 }

 public int compare(byte[] arg0, byte[] arg1) {
  // TODO 自动生成方法存根
  String str1=new String (arg0);
  String str2=new String (arg1);
  int num1=Integer.parseInt(str1);
  int num2=Integer.parseInt(str2);
  if(num1>num2)
   return RecordComparator.FOLLOWS;
  else if(num1<num2)
   return RecordComparator.PRECEDES;
  
  return RecordComparator.EQUIVALENT;
 }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息