`
CnXiaowei
  • 浏览: 49789 次
社区版块
存档分类
最新评论

J2ME手机编程心得(二)

阅读更多
  J2ME的环境配置好了,现在就开始写我们的第一个J2ME的手机程序吧!

    先做一个比较简单的手机计算器好了。。

     按照前面说的方法建立一个工程后,将代码补充到生成的框架里面就可以了。

     TestMidlet.java代码:

    package testmidlet;

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

public class TestMidlet extends MIDlet {
  static TestMidlet instance;
  TestScreen displayable = new TestScreen();
  public TestMidlet() {
    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;
  }

}

    TestScreen.java代码:

package testmidlet;

import javax.microedition.lcdui.*;

public class TestScreen extends Form implements CommandListener {
 
  private TextField intA = new TextField("请输入数字a","0",10,TextField.DECIMAL);
  private TextField intB = new TextField("请输入数字b","0",10,TextField.DECIMAL);
  private TextField result = new TextField("运算结果:","0",10,TextField.ANY);
  private ChoiceGroup opt = new ChoiceGroup("运算:",ChoiceGroup.EXCLUSIVE);
  String[] op = {"+","-","*","/"};
  public TestScreen() {
    super("计算器");
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }

  private void jbInit() throws Exception {
    opt.append(op[0],null);
    opt.append(op[1],null);
    opt.append(op[2],null);
    opt.append(op[3],null);
    append(intA);
    append(intB);
    append(opt);
    append(result);
    setCommandListener(this);
    addCommand(new Command("退出", Command.EXIT, 1));
    addCommand(new Command("计算",Command.OK,2));
  }
 
  private void performAddAction(){
    int a,b,r = 0;
    a = Integer.parseInt(intA.getString());
    b = Integer.parseInt(intB.getString());
    if(op[opt.getSelectedIndex()].equals("+")){
      r = a + b;
    }
    if(op[opt.getSelectedIndex()].equals("-")){
      r = a - b;
    }
    if(op[opt.getSelectedIndex()].equals("*")){
      r = a * b;
    }
    if(op[opt.getSelectedIndex()].equals("/")){
      if(b == 0){
        result.setString("除数不能为0!");
        return;
      }
      r = a / b;
    }
    result.setString(Integer.toString(r));
  }

  public void commandAction(Command command, Displayable displayable) {
    if (command.getCommandType() == Command.EXIT) {
      TestMidlet.quitApp();
    }
    if(command.getCommandType() == Command.OK){
      performAddAction();
    }
  }

}

    这个程序比较简单,类TestScreen继承了Form类,所以可以添加各种Item到屏幕里,例如文本框(TextField)、单选按钮(ChoiceGroup)等等。TestScreen实现了CommandListener 接口,所以可以响应命令按键事件,当然也可以单独建一个类继承CommandListener,不过似乎没有必要,在J2ME中,因为资源有限,因此要节省资源,多一个Class对生成的jar大小和运行效率都会有影响,因此虽然面向对象和各种设计模式对设计十分有利但是相对来说也牺牲了程序的运行速度。

 
  private TextField intA = new TextField("请输入数字a","0",10,TextField.DECIMAL);
  private TextField intB = new TextField("请输入数字b","0",10,TextField.DECIMAL);
  private TextField result = new TextField("运算结果:","0",10,TextField.ANY);
  private ChoiceGroup opt = new ChoiceGroup("运算:",ChoiceGroup.EXCLUSIVE);
  String[] op = {"+","-","*","/"};   
  以上代码创建了三个文本输入框和一个单选按钮组,还有一个字符串的数组来保存计算的各种操作。

    opt.append(op[0],null);
    opt.append(op[1],null);
    opt.append(op[2],null);
    opt.append(op[3],null);
    append(intA);
    append(intB);
    append(opt);
    append(result);
    setCommandListener(this);
    addCommand(new Command("退出", Command.EXIT, 1));
    addCommand(new Command("计算",Command.OK,2));
    以上代码将三个文本框和单选按钮组加入到屏幕(也就是Form)中,并且设置响应命令按键的类是自己(this),然后加入了两个命令按钮,分别放在EXIT和OK的位置。一般来说,EXIT是左边的按钮,OK是右边的按钮。

private void performAddAction(){
    int a,b,r = 0;
    a = Integer.parseInt(intA.getString());
    b = Integer.parseInt(intB.getString());
    if(op[opt.getSelectedIndex()].equals("+")){
      r = a + b;
    }
    if(op[opt.getSelectedIndex()].equals("-")){
      r = a - b;
    }
    if(op[opt.getSelectedIndex()].equals("*")){
      r = a * b;
    }
    if(op[opt.getSelectedIndex()].equals("/")){
      if(b == 0){
        result.setString("除数不能为0!");
        return;
      }
      r = a / b;
    }
    result.setString(Integer.toString(r));

  }

  上面的函数是具体的计算过程。。。

    if(command.getCommandType() == Command.OK){
      performAddAction();
    }

  如果按的是OK的按钮,则执行计算。

   OK,这个简单的小程序就完成啦!当然这只是一个最基本的程序,但J2ME的编程方式就是这个样子的。以下是程序运行界面:

分享到:
评论

相关推荐

    j2me 手机短信编程(sms),经典

    j2me 手机短信编程(sms),经典 适合编程各个阶段的人学习,一定很有帮助

    J2ME手机扫雷游戏

    J2ME是Java技术的一个分支,主要用于嵌入式系统和移动设备,如早期的智能手机和平板电脑,它为开发者提供了跨平台的编程能力。 在这款J2ME手机扫雷游戏中,开发者运用了J2ME的核心技术,包括MIDP(Mobile ...

    j2me游戏开发实例

    **J2ME游戏开发实例详解** J2ME(Java 2 Micro Edition)是Java平台的一个子集,专门用于...通过这个J2ME游戏开发实例,你可以深入理解移动游戏开发的各个方面,逐步提升自己的编程技能,为未来的项目打下坚实基础。

    基于J2me MIDP2.0的手机游戏模拟

    MIDP(Mobile Information Device Profile)是J2ME的一部分,主要针对移动设备,特别是手机的游戏和应用开发。MIDP2.0是MIDP的一个版本,增加了更多功能和改进,如更强大的用户界面组件、多媒体支持和数据存储。 ...

    【中文】【 J2ME开发大全 】【pdf】【15.87 MB】

    给定信息中的“【中文】【 J2ME开发大全 】【pdf】【15.87 MB】”指的是一本关于J2ME开发的经典书籍,该书籍提供了详尽的J2ME开发指南,包括基础概念、编程技巧、最佳实践等内容。作为一本经典书籍,它对于想要深入...

    J2me手机泡泡堂游戏

    《J2ME手机泡泡堂游戏》是一款基于Java平台开发的移动设备游戏,它以其与经典泡泡堂游戏的高度相似性赢得了玩家的喜爱。此游戏的核心亮点在于它不仅提供了丰富的游戏体验,而且还附带了全部的源代码,这对于开发者和...

    j2me小练习,教学用

    【标题】"j2me小练习,教学用" 在IT领域,J2ME(Java 2 Platform, Micro Edition)是...通过实践这个项目,学习者不仅可以提升J2ME编程技能,还能深入理解移动游戏开发的各个方面,为未来更复杂的项目打下坚实的基础。

    j2me_fly_game_1945

    《J2ME飞翔之旅:1945飞行射击游戏源码解析》 在移动设备尚未普及智能操作系统的时代,Java...通过对这款源码的学习,开发者不仅可以掌握J2ME编程技巧,还能深入理解游戏开发的核心流程,为今后的项目提供宝贵的参考。

    J2ME学习视频

    这个资源可能是由一位名为“txyly998”的博主分享的,旨在帮助初学者和开发者掌握J2ME编程。 描述中提到的“博文链接”指向了iteye博客的一个页面(https://txyly998.iteye.com/blog/339081),该页面可能包含更...

    一个超简单的J2ME游戏实例

    J2ME,全称Java Micro Edition,是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机和功能手机。它提供了开发和部署小型应用程序的框架,包括游戏。在这个超简单的J2ME游戏实例中,我们主要关注...

    Java手机游戏海底探险源文件

    总的来说,Java手机游戏海底探险源文件提供了一个实践性的学习案例,涵盖了Java编程、J2ME技术、游戏设计与开发等多个重要知识点。通过研究这个项目,开发者不仅可以提升Java编程技能,还能了解到游戏开发的全过程,...

    手机游戏开发全书试读版本

    - **全面理解手机游戏开发**:通过本书的学习,读者不仅能够掌握具体的编程技巧,还能对整个手机游戏开发过程有一个全面的认识。 - **提升个人与团队能力**:本书提供的实用指南和技术支持,能够帮助开发者和开发...

    编程人员应常去的网站

    42. **Fyter的博客**:个人技术博客,分享编程经验和心得。 43. **DevExpress**:提供ASP.NET、WinForms等控件和开发工具。 44. **OperaMask**:浏览器插件开发,尤其与JavaScript和Web开发相关。 45. **中国源码...

    个人收藏的编程下载资源全部公布

    ### 个人收藏的编程下载资源全面解析 在数字化时代,编程资源的获取变得前所未所地便捷,但对于初学者或是寻找特定资源的专业人士来说,筛选出高质量、可靠的学习资料仍然是一个挑战。本文将深入分析一份个人收藏的...

    java基础学习心得.docx

    Java 基础学习心得 Java 是一种广泛使用的编程语言,随着其广泛应用,越来越多的人开始学习 Java。那么,Java 学习需要什么根底?下面,我们将详细介绍 Java 学习的基础知识。 Java 学习需要什么根底? Java 学习...

    java学习心得总结.pdf

    Java学习心得总结 Java是一种广泛使用的高级编程语言,尤其在企业级应用开发中占据着重要地位。学习Java需要循序渐进,扎实基础,才能逐步掌握其精髓。以下是一些关于Java学习的关键点和注意事项: 1. **数据类型*...

    java实习心得.pdf

    每个方向都有其独特的挑战和潜力,如中国庞大的手机用户市场就为J2ME提供了广阔的发展空间。 实习不仅是技能的提升,更是个人成长的过程。在实习结束后,你需要反思,持续学习,保持对新信息的敏感度,这对于一个...

    JAVE 基础入门 外带经验心得 原版

    - **J2ME (Java 2 Micro Edition)**:专为移动设备如手机和平板电脑等小型设备设计的 Java 版本。 - **J2SE (Java 2 Standard Edition)**:标准版 Java,适用于桌面应用和企业级应用程序。 - **J2EE (Java 2 ...

    《Practical Java》中文版随书

    此外,文件名"okbase.net"可能是指一个包含更多资源或讨论平台的网站,读者可以在该网站上获取额外的支持、答疑解惑,或者与其他学习者交流心得,进一步提升自己的Java和J2ME技能。 总的来说,《Practical Java》...

Global site tag (gtag.js) - Google Analytics