免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1203 | 回复: 0
打印 上一主题 下一主题

★(转)J2ME学习笔记(八) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-03-21 15:33 |只看该作者 |倒序浏览

今天买了2.5磅咖啡豆,星巴克的。有点点贵,用了599大洋,呵呵,偶尔奢侈一下也不为过嘛。刚刚磨了一杯咖啡,点上烟,呵呵,继续开始j2me的学习历程。虽说今天星期六,可是估计今天看不了多少,明天要去公司加班,所以今天还是要早点休息。。。想想前几个星期,soho的时候每天晚上就是我的工作时间,白天嘛。。嘿嘿,睡觉。。。那真是幸福呀。。。好日子不再咯。。。   呵呵,TextBox,好像看名字就知道干什么的了,HTML里面的输入框。呵呵,感觉应该差不多。写一个(和TextBox有相同使用方法的还有一个对象:TextField,呵呵,感觉这个就是HTML里面的TextArea而已^_^)
测试程序先:
package com.graph;
 
 
/**
 * @author You Li
 *
 * CopyRight (C) 2005 www.iguess.com.cn     
 */
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
 
public class TextBoxTest extends MIDlet implements CommandListener{
      
       private Display display;
       Command commit ;
       public TextBoxTest() {
              display = Display.getDisplay(this);
              // TODO 自动生成构造函数存根
       }
 
       protected void startApp() throws MIDletStateChangeException {
              // TODO 自动生成方法存根
              commit = new Command("提交",Command.SCREEN,1) ;
              TextBox tb = new TextBox("输入框","default",12,TextField.ANY) ;
              tb.addCommand(commit) ;
              tb.setCommandListener(this) ;
              display.setCurrent(tb) ;
       }
 
       protected void pauseApp() {
              // TODO 自动生成方法存根
 
       }
 
       protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
              // TODO 自动生成方法存根
 
       }
       public void commandAction(Command c,Displayable s){
              TextBox tmp = (TextBox)s ;
              System.out.println(tmp.getString()) ;
       }
}
 
  
这个程序的功能是将屏幕上输入的内容在后台打印出来。TextBox("输入框","default",12,TextField.ANY),这个是用来设置对话框的属性。我今天测试了一下,看了一下文档,主要在最后两个属性,数字表示这个输入框可以接受的最大字符数目,TextField.ANY-任意字元;TextField.EMAILADDR-接受Email地址;TextField.NUMERIC-只接受数字输入;TextField.PASSWORD-输入密码;TextField.PHONENUMBER-输入电话号码,就是说可以接受数字,空格,星号,井号;TextField.URL-接受输入的URL;TextField.CONSTRAINT_MASK-用来和TextBox的getConstraints()方法所传回的结果做AND逻辑运算,然后可以取得目前的限定设置。当然,这个参数不要在TextBox创建的时候使用。
    呵呵,TextBox算是我学了这几天最简单最容易的东西了,呵呵,看来今天心情不错,可能是星巴克的作用哦。呵呵。。。对了,说点题外话,喝咖啡的时候如果喜欢加入牛奶的话一定是咖啡到入牛奶,这样咖啡里面的牛奶香味更加淳厚^_^也是我的习惯,当然,我从来不放糖,我觉得那回破坏咖啡本来的酸味。休息的时候磨上一杯现磨的咖啡会让你马上觉得生活的优雅之处,也会让你暂时远离城市的烦恼。咖啡&烟,一个安静的周末加上j2me资料的相伴,感觉不错:)
    呵呵,扯远了=_=!
    再开始看看From咯,和HTML里面一样,Form单独存在是没有任何意义的。它必须包含有Item类的子类才会有作用。
    写了一个Form的测试程序:
package com.graph;
 
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
 
/**
 * @author You Li
 *
 * CopyRight (C) 2005 www.iguess.com.cn     
 */
public class FormTest extends MIDlet implements CommandListener,ItemStateListener {
 
       private Display display;
       Command commit ;
       public FormTest() {
              display = Display.getDisplay(this);
              // TODO 自动生成构造函数存根
       }
 
       protected void startApp() throws MIDletStateChangeException {
              // TODO 自动生成方法存根
              commit = new Command("Commit",Command.SCREEN,1) ;
              Form f = new Form("FormTest") ;
              f.append("String 1") ;//相当于new StringItem(null,"String 1")
              f.append("String 2") ;
              f.append(new StringItem("Label 1 ","Content 2")) ;
              f.append(new StringItem("Label 2 ","Content 2")) ;
              f.addCommand(commit) ;
              f.setCommandListener(this) ;
              f.setItemStateListener(this) ;
              display.setCurrent(f) ;
       }
 
       protected void pauseApp() {
              // TODO 自动生成方法存根
 
       }
 
 
       protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
              // TODO 自动生成方法存根
 
       }
 
       public void commandAction(Command c, Displayable s) {
              // TODO 自动生成方法存根
              Form tmp = (Form) s ;
              for(int i = 0;i
              StringItem si = (StringItem) tmp.get(i);
              //get()方法取回值是Item类,所以需要强制转化味StringItem类。
              System.out.println(si.getText());
              }
       }
 
       public void itemStateChanged(Item arg0) {
              // TODO 自动生成方法存根
 
       }
}
    呵呵,基本上再程序里面虽说没有什么注释,但是整个StringItem本身并不是很复杂。所以也没有过多的记录。而ImageItem的使用与StringItem基本相同。它的构造方法是:
Append(new ImageItem(标志文字,Image对象,位置控制参数,替代文字));
    ImageItem位置参数主要就是如下几个咯:ImageItem.LAYOUT_DEFAULT;ImageItem.LAYOUT_LEFT;ImageItem.LAYOUT_RIGHT;ImageItem.LAYOUT_CENTER;ImageItem.LAYOUT_NEWLINE_BEFORE;ImageItem.LAYOUT_NELINE_AFTER
   
它的另外一个构造方法就是append(new Image());这个相当于调用了Append(new ImageItem(null,Image对象,ImageItem.LAYOUT_DEFAULT,null))来构造ImageItem对象。
 
ChoiceGroup,当Form与ChoiceGroup配合使用的时候就和再前面使用List一样,因为ChoiceGroup和List一样会为我们构建一个Choice选择框。还是先看程序咯:
package com.graph;
 
/**
 * @author You Li
 *
 * CopyRight (C) 2005 www.iguess.com.cn
 */
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
 
public class ChoiceGroupTest extends MIDlet implements ItemStateListener {
 
  private Display display;
  public ChoiceGroupTest() {
         display = Display.getDisplay(this);
         // TODO 自动生成构造函数存根
  }
 
 
  protected void startApp() throws MIDletStateChangeException {
         // TODO 自动生成方法存根
         Form f = new Form("FormTest") ;
         ChoiceGroup cg =new ChoiceGroup("ChoiceGroupTest",Choice.EXCLUSIVE);
         //构建Choice的参数和List相比,除了IMPLICIT不可用外,EXCLUSIVE,IMPLICIT参数是可以用的
         cg.append(" A ",null) ;
         cg.append(" B ",null) ;
         cg.append(" C ",null) ;
         f.append(cg) ;
         f.setItemStateListener(this) ;
         display.setCurrent(f) ;
  }
 
  protected void pauseApp() {
         // TODO 自动生成方法存根
 
  }
 
  protected void destroyApp(boolean b) throws MIDletStateChangeException {
         // TODO 自动生成方法存根
 
  }
 
  public void itemStateChanged(Item item) {
         // TODO 自动生成方法存根
         ChoiceGroup tmp = (ChoiceGroup)item ;
         System.out.println("Choice " + tmp.getSelectedIndex() +    " selected") ;
  }
 
}
 
  所有的手机里面我们都看到了一个调整音量的按钮,这个按钮实际上调用的GUI介面元素就是Gauge。Gauge的构造方法里面有4个参数,第一个就是Gauge的标签,第二个就是Gauge是否支持与用户互动。剩下的两个参数就是这个图形的长度还宽度咯。
还是看看例子吧。呵呵,感觉像是例子编写员一样,这段时间写这种例子写了很多。但是也有很多好处,呵呵,至少让我记住了不少东西。所以我建议兄弟们不要靠拷贝,粘贴来写自己的代码,最好这种学习阶段就一行一行的写。
package com.graph;
 
/**
 * @author You Li
 *
 * CopyRight (C) 2005 www.iguess.com.cn
 */
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class GaugeTest extends MIDlet implements ItemStateListener {
 
  private Display display;
  Gauge g1 ;
  Gauge g2 ;
  public GaugeTest() {
         display = Display.getDisplay(this);
         // TODO 自动生成构造函数存根
  }
 
  protected void startApp() throws MIDletStateChangeException {
         // TODO 自动生成方法存根
         Form f = new Form("FormTest") ;
         g1 = new Gauge("Gauge1",true,200,100);
         g2 = new Gauge("Gauge2",flase,200,100);
         f.append(g1) ;
         f.append(g2) ;
         f.setItemStateListener(this) ;
         display.setCurrent(f) ;
  }
 
  protected void pauseApp() {
         // TODO 自动生成方法存根
 
  }
 
 
  protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
         // TODO 自动生成方法存根
 
  }
 
  public void itemStateChanged(Item item) {
         // TODO 自动生成方法存根
         Gauge tmp = (Gauge)item ;
                if(tmp.getLabel().equals("Gauge2")){
                g1.setValue(tmp.getValue()) ;
         }
  }
 
}
 
   然后就是Form的另外一个对象,DateField。还是写了一个比较简单的时间调整。通过这个程序我们来看DateField的各项属性。
package com.graph;
 
/**
 * @author You Li
 *
 * CopyRight (C) 2005 www.iguess.com.cn
 */
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.* ;
 
public class DateFieldTest extends MIDlet implements ItemStateListener {
 
  private Display display;
  public DateFieldTest() {
         display = Display.

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/5142/showart_16877.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP