`

J2ME应用实例——一个简单的计算器实现(附源代码)

阅读更多

J2ME应用实例——一个简单的计算器实现(附源代码)

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

使用低级用户界面做了一个基于Nokia S60系列的简单计算器程序,希望对大家有所帮助。本文只包含了程序代码,如果需要图片文件和源代码请给我发邮件:cqucyf@263.net

源代码如下

// CalcMIDlet.java

package my.calc;

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class CalcMIDlet extends MIDlet {

private static CalcMIDlet instance;

private CalcCanvas calc = new CalcCanvas();

/** Constructor */

public CalcMIDlet() {

instance = this;

}

/** Main method */

public void startApp() {

Display.getDisplay(this).setCurrent(calc);

}

/** Handle pausing the MIDlet */

public void pauseApp() {

}

/** Handle destroying the MIDlet */

public void destroyApp(boolean unconditional) {

}

/** Quit the MIDlet */

public static void quitApp() {

instance.destroyApp(true);

instance.notifyDestroyed();

instance = null;

}

}

// CalcCanvas.java

package my.calc;

import com.nokia.mid.ui.FullCanvas;

import javax.microedition.lcdui.*;

import java.io.*;

/**

* 计算器界面

* <p>Title: 基于Nokia S60的计算器</p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2005</p>

* <p>Company: </p>

* email:cqucyf@263.net

* @version 1.0

*/

public class CalcCanvas extends FullCanvas{

/**退出按钮*/

private Command cmdExit;

/**标题*/

private String title = "Calculator";

/**字体*/

private Font f;

/**显示的数字*/

private long result = 0;

/**焦点编号*/

private int num = 0;

/**焦点坐标*/

private int focusX = 5;

private int focusY = 52;

/**按钮宽度间隔*/

private int intervalWidth = 2;

private int intervalHeight = 2;

/**图片起点坐标*/

private int x = 10;

private int y = 70;

/**按钮尺寸*/

private int buttonWidth = 37;

private int buttonHeight = 28;

/**图片文件*/

private Image image = null;

/**存储控件代表的内容*/

private char[] info = {'7','8','9','/',

'4','5','6','*',

'1','2','3','-',

'0','?','=','+'

};

/**运算中的第一个数字*/

private long firstNum = 0;

/**运算中的第二个数字*/

private long secondNum = 0;

/**是否输入第一个数字,true代表已经输入,false代表未输入*/

private boolean flag = false;

/**存储按下的运算按钮的下标*/

private int func = 0;

/**默认构造方法*/

public CalcCanvas() {

try{

image = Image.createImage("/calc.png");

//System.out.println(x);

}catch(IOException e){

//ignore

System.out.println(e);

}

}

/**

* 绘制

* @param g 图形对象

*/

public void paint(Graphics g) {

/**清除当前显示*/

g.setColor(255,255,255);

g.fillRect(0,0,getWidth(),getHeight());

//恢复系统颜色

g.setColor(0,0,0);

f = g.getFont();

//绘制标题

g.drawString(title,getWidth() / 2,f.getHeight() / 2,Graphics.TOP|Graphics.HCENTER);

//绘制文本框

g.drawRect(3,24,172,20);

//绘制数字

String temp = Long.toString(result);

g.drawString(temp,getWidth() - 3,30,Graphics.TOP|Graphics.RIGHT);

//绘制面板

g.drawImage(image,2,50,Graphics.TOP|Graphics.LEFT);

//绘制焦点

drawFocus(g,num);

}

/**

* 事件处理

* @param keyCode 按钮值

*/

public void keyPressed(int keyCode){

//System.out.println(keyCode);

//向左移动,如果移动到右边界,则移动到下一行

if(keyCode == KEY_LEFT_ARROW){

//判断是否到达最后一个

if(num == 0){

num = 15;

}else{

num--;

}

}

//向右移动,如果移动到左边界,则移动到上一行末尾

if(keyCode == KEY_RIGHT_ARROW){

//判断是否到达第一个

if(num == 15){

num = 0;

}else{

num++;

}

}

//向上移动,如果移动到上边界,则移动到下边界对应位置

if(keyCode == KEY_UP_ARROW){

//判断是否移动到上边界,如果是则移动到下边界的对应位置

if(num - 4 < 0){

num = 15 + num - 3;

}else{

num = num - 4;

}

}

//向下移动,如果移动到下边界,则移动到上边界对应位置

if(keyCode == KEY_DOWN_ARROW){

//判断是否达到下边界,如果是则移动到上边界的对应位置

if(num + 4 > 15){

num = num + 3 - 15;

}else{

num = num + 4;

}

}

//确定按钮

if(keyCode == -5){

//根据选择按钮的不同进行操作

action();

}

//System.out.println("num : " + num);

//绘图

repaint();

}

/**

* 绘制焦点矩形

* @param g 图形对象

* @param num 焦点编号

*/

private void drawFocus(Graphics g,int num){

//设置绘制颜色为红色

g.setColor(255,0,0);

//设置焦点的XY坐标

setXandYByNum(num);

//绘制选择框

g.drawRect(focusX,focusY,buttonWidth,buttonHeight);

}

/**

* 根据焦点编号,设置焦点的XY坐标

* @param num 焦点编号

*/

private void setXandYByNum(int num){

focusX = 5 + (num % 4) * (buttonWidth + intervalWidth);

focusY = 52 + (num / 4) * (buttonHeight + intervalHeight);

}

/**

* 在用户按下确定按钮以后,根据选择按钮的不同进行操作

*/

private void action(){

//判断焦点按钮是否为数字

if((num >=0 && num < 3) || (num > 3 && num < 7) || (num > 7 && num < 11) || (num == 12)){

//如果是数字,则将原数字乘以10,再加上现在的数字

result = result * 10 + (info[num] - '0');

}

//如果按下的是负号,则求当前数字的负数

if(num == 13){

result = -result;

}

//判断第一个数字是否输入

if(flag == true){

secondNum = result;

//处理功能按钮

//按下=按钮,或者按下运算按钮时,进行运算

if(num == 14 || (num % 4 == 3)){

//根据运算按钮进行运算

if(func == 3){

//除法运算

result = firstNum / secondNum;

}else if(func == 7){

//乘法运算

result = firstNum * secondNum;

}else if(func == 11){

//减法运算

result = firstNum - secondNum;

}else if(func == 15){

//加法运算

result = firstNum + secondNum;

}

if(num == 14){

//将运算结果赋给第一个数字

firstNum = result;

//将标志修改为false

flag = false;

}else{

//记录运算按钮

func = num;

//将运算结果赋给第一个数字

firstNum = result;

//将显示清零

result = 0;

}

}

}else{

//将当前值赋给第一个数字

firstNum = result;

//判断是否按下运算按钮,并存储按下的运算按钮

if(num % 4 == 3){

func = num;

//设置第一个数字已输入,并将显示清零

flag = true;

result = 0;

}

}

}

}

欢迎大家访问我的bloghttp://blog.csdn.net/mailbomb

分享到:
评论

相关推荐

    J2me飞机游戏附源代码.rar

    本篇文章将深入探讨一款基于J2ME的飞机游戏源代码,为新手提供一个了解和学习J2ME游戏开发的实例。 首先,我们来看看这款游戏的核心概念。在J2ME中,游戏通常基于MIDP(Mobile Information Device Profile)和CLDC...

    J2me 坦克大战源代码

    "J2ME坦克大战源代码"是基于这个平台开发的一个经典游戏——坦克大战的源代码实例。通过学习和研究这个源代码,开发者可以深入了解J2ME编程的基本概念、技术和设计模式。 1. J2ME架构与MIDP:J2ME由配置...

    j2me众多源代码免费提供下载,快来啊

    标签“J2ME 源代码”明确了资源的主要内容,即与J2ME相关的编程源码,可能涵盖了各种功能的实现,如用户界面设计、网络通信、数据存储等,这些源代码可以作为学习J2ME开发的实例,也可以作为项目开发的起点。...

    基于Java的实例源码-蜀山剑侠传游戏J2ME手机版源代码.zip

    "基于Java的实例源码-蜀山剑侠传游戏J2ME手机版源代码.zip"这个标题揭示了我们关注的核心内容是关于Java编程语言的一个具体应用实例,即一个名为“蜀山剑侠传”的游戏。这个游戏是为J2ME(Java Micro Edition)平台...

    j2me 手机游戏 网络扑克牌对战源代码.rar

    总结起来,这个"j2me 手机游戏 网络扑克牌对战源代码.rar"是一个珍贵的学习资源,它涵盖了J2ME游戏开发的关键技术,包括用户界面设计、网络通信、游戏逻辑实现、数据存储和错误处理等。对于想要深入理解J2ME或者希望...

    j2me摩迦历险记源代码.rar

    总的来说,这个J2ME摩迦历险记的源代码实例为我们提供了一个深入了解J2ME游戏开发的窗口。通过对源代码的学习,开发者可以掌握如何在移动设备上创建互动体验,理解J2ME的API用法,以及如何优化性能以适应资源受限的...

    仙剑1.8寸屏模板——j2me

    6. **源代码分析**:虽然未提供具体的源代码文件列表,但通常一个J2ME项目会包含`.java`源代码文件、资源文件(如图片、音频)、配置文件(如`.jad`和`.jar`文件),以及可能的编译和打包脚本。开发者可以通过分析...

    基于Java的实例源码-简单模拟的J2ME潜艇大战源代码.zip

    本实例源码是基于Java的J2ME平台开发的一款简单游戏——潜艇大战。通过分析这个源码,我们可以深入理解Java在游戏开发中的应用以及J2ME的一些核心概念。 首先,J2ME由MIDP(Mobile Information Device Profile)和...

    Winter Sports国外J2ME游戏附代码

    在源代码中,我们可以找到游戏的主要逻辑部分——JAR开发包,这是一个包含编译后Java类的归档文件,是J2ME应用的执行载体。开发者可以通过反编译JAR文件,查看并理解每个类的功能,学习如何组织游戏的主循环、事件...

    Java源码包100个设计实例.zip

    Java毕业论文:搜索引擎系统附源代码.rar JAVA毕业设计_员工管理系统含文档.rar Java毕业设计一款J2me飞行射击游戏.rar java求一个整数的因子 Java波浪文字制作方法及源代码.rar Java火影忍者游戏源代码.rar JAVA版...

    J2ME手机游戏实例之--俄罗斯方块

    本实例将探讨如何使用J2ME开发经典游戏——俄罗斯方块。在手机上实现这个游戏,开发者需要掌握J2ME的基础知识,包括MIDP(Mobile Information Device Profile)和CLDC(Connected Limited Device Configuration)。 ...

    基于java+J2ME的手机贪吃蛇游戏开发项目设计与实现(项目报告+源代码).zip

    通过阅读源代码,开发者可以深入了解J2ME游戏开发的细节,学习如何在有限的资源下实现高效的游戏逻辑和图形渲染。 总结,基于Java J2ME的手机贪吃蛇游戏开发项目是一个典型的移动游戏开发案例,它涵盖了游戏设计、...

    j2me 游戏开发实例_华容道

    ### J2ME游戏开发实例——华容道 #### 一、项目背景与规划 ##### 1. 项目动机 在互联网上浏览时,作者发现了一篇关于使用Delphi实现华容道游戏的文章,深受启发。鉴于J2ME的广泛应用和发展趋势,决定尝试将华容道...

    基于Java的实例开发源码-J2ME的游戏梦幻炸弹人源程序.zip

    本资源提供的是一个基于J2ME实现的经典游戏——梦幻炸弹人的源代码,对于学习Java游戏开发的开发者来说,是一个非常实用的学习案例。 1. **J2ME基础知识** - J2ME架构:包括配置(Configurations)、 profiles...

    j2me手机游戏代码

    "j2me手机游戏代码"这个主题聚焦于利用J2ME技术开发手机游戏,特别是通过实际的开发实例——大富翁游戏的源代码来学习。 J2ME是Java平台的一个子集,专门针对资源有限的嵌入式设备,如早期的智能手机。它的核心是...

    j2me手机游戏(魔塔)

    通过分析和研究这个游戏的源代码,开发者可以学习到如何构建一个完整的J2ME游戏,包括UI设计、游戏逻辑、音效处理、数据管理等多个方面。而压缩包中的“j2meGame”文件可能包含了所有相关的源代码、资源文件以及编译...

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    J2ME手机游戏设计案例源代码-GameEngine_Record

    ### J2ME手机游戏设计案例源代码-GameEngine_Record #### 概述 J2ME(Java 2 Micro Edition)是Sun Microsystems推出的一种基于Java的技术标准,主要用于移动设备上的应用程序开发,例如智能手机、PDA等。本文将...

    ZLT.rar_j2me 图片_slide J2ME_slide show j2me_zlt

    在这款名为“ZLT.rar”的压缩包中,我们看到了一个基于J2ME实现的国旗播放程序,它实际上是一个简单的幻灯片展示应用,展示了如何在有限的资源环境下利用Java进行图形绘制和动画处理。 在J2ME中,图片处理主要依赖...

    J2ME贪吃蛇原程序

    在本教程中,我们将深入探讨一个基于J2ME开发的经典游戏——贪吃蛇的源代码,这是一个很好的学习实例,它包含了详细的注释,代码结构清晰易懂。 1. **游戏架构** 贪吃蛇游戏通常包含以下几个核心组件: - 游戏...

Global site tag (gtag.js) - Google Analytics