国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

J2ME學習札記2

2019-11-17 06:19:50
字體:
來源:轉載
供稿:網友

  Command對象
  發信站: 北大未名站 (2001年10月20日20:33:56 星期六) , 站內信件
   在前面我們其實已經使用過Command對象了。J2ME的事件系統比較非凡,你必須首先定義一系列的命令,然后注冊到容器對象中,例如(Form、Alert、List、TextBox),再設定命令監聽者
  ,編寫好commandAction()方法即可。當系統發送某個命令,便由commandAction()方法進行統籌處理。下面的程序演示了如何定義多個命令以及如何編寫commandAction()方法。
  package fancy.test;
  
  import javax.microedition.midlet.*;
  import javax.microedition.lcdui.*;
  
  public class CMD extends MIDlet implements CommandListener
  {
  PRivate Display display;
   private Form props;
  
   private Command backCommand = new Command("BACK", Command.BACK, 2);
   private Command cancelCommand = new Command("CANCEL", Command.CANCEL, 1);
   private Command exitCommand = new Command("EXIT", Command.EXIT, 1);
   private Command helpCommand = new Command("HELP", Command.HELP, 1);
   private Command itemCommand = new Command("ITEM", Command.ITEM, 1);
   private Command okCommand = new Command("OK", Command.OK, 1);
   private Command screenCommand = new Command("SCREEN", Command.SCREEN, 1);
   private Command stopCommand = new Command("STOP", Command.STOP, 1);
  
  
  public CMD()
  {
  display = Display.getDisplay(this);
   }
  
  public void startApp()
  {
  props = new Form("Hello World");
  props.append("Hello World!/n");
  
  props.addCommand(backCommand);
  props.addCommand(cancelCommand);
  props.addCommand(exitCommand);
  props.addCommand(helpCommand);
  props.addCommand(itemCommand);
  props.addCommand(okCommand);
  props.addCommand(screenCommand);
  props.addCommand(stopCommand);
  props.setCommandListener(this);
  display.setCurrent(props);
   }
  
  public void showScreen(String cmd)
  {
  Form form=new Form("show cmd");
  form.append(cmd);
  form.addCommand(exitCommand);
  form.setCommandListener(this);
  display.setCurrent(form);
  
  }
  
  public void commandAction(Command c, Displayable s)
  {
  if (c == exitCommand)
  {
  destroyApp(false);
   notifyDestroyed();
  }
  else if(c==helpCommand)
  {
  showScreen("help");
  }
  else if(c==backCommand)
  {
  showScreen("back");
  }
  else if(c==cancelCommand)
  {
  showScreen("cancel");
  }
  else if(c==itemCommand)
  {
  showScreen("item");
  }
  else if(c==okCommand)
  {
  showScreen("ok");
  }
  else if(c==screenCommand)
  {
  showScreen("screen");
  }
  if(c==stopCommand)
  {
  showScreen("stop");
  }
  
  
   }
  
  public void destroyApp(boolean unconditional)
  {
   }
  
  public void pauseApp()
  {
  display.setCurrent(null);
  props = null;
   }
  
  }
   在上面的程序(CMD.java)中定義了八個命令。假如commandAction()方法接到這八個命令,多半是調用showScreen()方法,將這幾個命令輸出。showScreen()方法會產生一個新的容器對象(Form),作為當前的屏幕,并把截獲的命令顯示在屏幕中。
   CMD.java的運行效果如下2圖所示(當屏幕出現Hello World字樣的時候,你需要按下退出鍵,命令菜單就會出現了,你可以依次執行各個命令)。
  
  
  TextBox文本框對象
  發信站: 北大未名站 (2001年10月20日20:36:34 星期六) , 站內信件
  
   TextBox是一個容器類型的對象(和Form的性質一樣)。用法如下所示:
  
  package fancy.test;
  
  import javax.microedition.midlet.*;
  import javax.microedition.lcdui.*;
  
  public class ShowTextBox extends MIDlet implements CommandListener
  {
  private Display display;
   private TextBox txtBox;
  
  private Command exitCommand = new Command("Exit", Command.EXIT, 1);
  
  public ShowTextBox()
  {
  display = Display.getDisplay(this);
   }
  
  public void startApp()
  {
  //or :
  //String str="hello world";
  //txtBox = new TextBox("Text Box",str,str.length(),0);
  //the follow code is wrong:
  //txtBox = new TextBox("Text Box",str,any number here,0);
  
  txtBox = new TextBox("Text Box",null,200,0);
  
  txtBox.addCommand(exitCommand);
  txtBox.setCommandListener(this);
  display.setCurrent(txtBox);
   }
  
  public void commandAction(Command c, Displayable s)
  {
  if (c == exitCommand)
  {
  destroyApp(false);
   notifyDestroyed();
  }
   }
  
  public void destroyApp(boolean unconditional)
  {
   }
  
  public void pauseApp()
  {
  display.setCurrent(null);
  txtBox = null;
   }
  
  }
   請注重TextBox類的構造函數,第一個參數實際上是窗口的名稱(因為TextBox是一個容器,可能是當前屏幕的顯示對象),第二個參數是缺省值,第三個參數是輸入字符的總長度。假如你設置了文本框的缺省值,那么第三個參數必須是缺省字符的長度。假如第三個參數的值和缺省字符的長度不一樣,那么程序運行不成功(編譯可以通過)。假如你將第二個參數置為null值,那么第三個參數可以任意設。
   ShowTextBox.java的運行效果如下圖所示:
  
  TextField文本域對象
  發信站: 北大未名站 (2001年10月20日20:37:59 星期六) , 站內信件
  
   TextField和TextBox有點相似,不過TextBox是多行的,而TextField是單行的。而且TextBox是容器類型的對象,但是TextField是項目類型的對象,只能夠被容器包含,不能夠單獨顯示。
  TextField文本域對象的用法如下所示:
  package fancy.test;
  
  import javax.microedition.midlet.*;
  import javax.microedition.lcdui.*;
  
  public class ShowTextField extends MIDlet implements CommandListener
  {
  private Display display;
  private Form props;
   private TextField txtField;
  
  private Command exitCommand = new Command("Exit", Command.EXIT, 1);
  
  public ShowTextField()
  {
  display = Display.getDisplay(this);
   }
  
  public void startApp()
  {
  props = new Form("Hello World");
  props.append("Hello World!/n");
  txtField=new TextField("EMail:", "", 15,TextField.EMAILADDR);
  props.append(txtField);
  props.addCommand(exitCommand);
  props.setCommandListener(this);
  display.setCurrent(props);
   }
  
  public void commandAction(Command c, Displayable s)
  {
  if (c == exitCommand)
  {
  destroyApp(false);
   notifyDestroyed();
  }
   }
  
  public void destroyApp(boolean unconditional)
  {
   }
  
  public void pauseApp()
  {
  display.setCurrent(null);
  props = null;
   }
  
  }
   請注重startApp()方法,我們使用Form對象作為當前屏幕的顯示對象,而將TextField對象作為Form的一個子項目顯示。下面來介紹TextField類的構造函數,第一個參數是文本域的名稱,第二個參數是缺省值,第三個參數是長度,第四個參數是文本域的類型,可選的值有: TextFi
  eld.PASSWord、TextField.EMAILADDR、TextField.PHONENUMBER、TextField. URL、TextFi
  eld. NUMERIC等等。構造好TextField對象之后,調用Form的append()方法將它添加到Form對
  象的子項目中。ShowTextField.java程序的運行效果如下圖所示:
  
  DateField對象
  發信站: 北大未名站 (2001年10月20日20:39:14 星期六) , 站內信件
  
   DateField對象和TextField對象一樣同屬于項目類型的對象,不能夠單獨顯示,必須作為容器對象的子項目顯示。DateField對象的作用是顯示一個日期,它和Windows控制面板中的時間和日期設置程序有點近似。DateField對象的用法如下所示:
  package fancy.test;
  
  import javax.microedition.midlet.*;
  import javax.microeditio

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳朔县| 斗六市| 长汀县| 富阳市| 云龙县| 化德县| 石狮市| 镇原县| 定结县| 麻栗坡县| 卢氏县| 博客| 阜城县| 东乌珠穆沁旗| 嵩明县| 绍兴县| 阿坝| 含山县| 安新县| 吉林市| 连城县| 广饶县| 光泽县| 罗源县| 革吉县| 鄂伦春自治旗| 开平市| 木兰县| 田阳县| 得荣县| 苏尼特右旗| 雅江县| 墨玉县| 西乌珠穆沁旗| 宁武县| 五台县| 岑巩县| 烟台市| 资阳市| 信阳市| 巴南区|