《j2me计算器设计(终稿).doc》由会员分享,可在线阅读,更多相关《j2me计算器设计(终稿).doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录摘 要II第1章 绪论- 1 -第2章 J2ME计算器- 2 -2.1J2ME的基本概念- 2 -2.2J2ME平台的搭建- 2 -2.2.1构建J2ME平台- 2 -2.2.2计算器的实现- 4 -第3章 运行结果- 7 -3.1 运行和结果- 7 -3.1.1计算器演示- 7 -参考文献- 9 -附 录- 10-J2ME计算器设计摘 要本文简单介绍了J2ME技术,J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE、J2EE并称。根据Sun的定义:J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机
2、顶盒、汽车导航系统等等。J2ME技术在1999年的JavaOne Developer Conference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。本文通过介绍J2ME平台的搭建,从而能实现计算器的设计。关键词:J2ME,搭建,实现设计- 25 - 第1章 绪论在今天计算已经无处不在。越来越多的人开始认为,经过了许多人共享一台计算机的大型主机时代,一人一台计算机的个人PC时代之后,下一个时代就是一人多台计算设备的普及计算时代(Ubiquitous Computing,IBM称之为Pervasive Computing)。计算设备将
3、从单一的PC扩展到各种各样的大小和功能,从家庭消费电子产品,到个人随身携带,穿着,车载的各种移动信息处理设备,多样化是这个领域的最大特点。网络是这个领域最重要的增值特性。当手机可以随时随地无线上网,PDA可以和个人PC同步,车载PC可以获得网上GPS地图数据时,这些孤立的设备才能够发挥最大的作用。而平台无关性和网络功能正是J2ME的设计目标和能力(事实上,Java最初的设计目标就是用于消费电子领域,但是后来在PC和服务器上得到了发展)。一次编写,到处运行的平台无关性,对网络,多重设备间联网的机制(JINI)显然对这个领域是至关重要的软件条件。这个领域内的Java标准就是J2ME。 明天的计算将
4、进入普及计算时代。各种消费电子产品,包括智能手机,PDA,Web-TV,将来的信息家电等等将实现随时随地的计算。这是一个异常广阔和丰富多彩的领域,其设备极度多样化而且都将在网络中,Java技术的跨平台性和网络功能在这里大有用武之地。这就是J2ME,这一丰富多彩的领域中生机勃勃的技术。第2章 J2ME计算器2,1J2ME的基本概念J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE、J2EE并称。 Java2版本书籍根据Sun的定义:J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。
5、J2ME技术在1999年的JavaOne Developer Conference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。2.2J2ME平台的搭建2.2.1构建J2ME平台1.从如下地址下载相关的软件。J2SDK1.4.2_03+WTK2.1: Eclipse3.0RC2 http:/www.eclipse.orgEclipseME0.4.1 2.按照顺序依次安装J2SDK1.4.2_03、WTK2.1、Eclipse3.0RC2和EclipseME0.4.1,安装完j2sdk后应该设置环境变量classpath、path和JA
6、VA_HOME等环境变量。接下来安装WTK2.1,和一般的应用程序安装一样。安装以后可以从KToolBar里面运行一下WTK2.1里面自带的一些Demo,如果正常运行表示WTK安装正确,下面我们要搭建Eclipse的开发环境了,Eclipse的安装很简单,你直接把Eclipse3.0RC2解压到c:eclipse就可以了。直接运行Eclipse.exe这样你就可以看到Eclipse的运行界面了。如果没有用过Eclipse的话那么你可以看看帮助文档,自己做个小java项目运行一下。下面我们要安装EclipseME.0.4.1的插件了,关闭Eclipse然后解压EclipseME0.4.1到c:e
7、clipseplugin里面,重新启动Eclipse,选择windows-preferences可以进行配置J2ME开发平台(图2.1)图2.1 开发平台选择Platform Components-Wireless Toolkits,右键选择add Wireless Toolkit会出现下面的界面。图2.2 配置界面2.2.2计算器的实现1.简单计算器功能图图2.3 功能图2.简单计算器界面把其放到到eclipse生产的工程目录的res目录下。图2.4 界面3.通过J2ME平台实现新建一个项目来开发J2ME项目,选择file-new-others-J2ME -J2ME MIDlet suite
8、,然后填写项目的名字calc,选择下一步最后完成,这样就新建了一个J2ME项目了。图2.5 新建接下来从Package Explorer里面选择项目calc然后新建一个J2ME MIDlet名字命名为calc,然后使用Eclipse编译。启动 Eclipse,配置 EclipseME 插件。要实现这个功能,请单击Window菜单,然后选择Preferences菜单项,然后在弹出的菜单中选择J2ME。然后执行以下步骤: 点击Platform Components,见图2.6。右键单击右边窗口Wireless Toolkits,选择Add Wireless Toolkit,此时会弹出窗口(见图2.
9、7),Wireless Toolkit Directory设置为wtk_home对应的安装目录。图2.6 EclipseME 插件配置界面图2.7添加Wireless Toolkit安装完成之后应该出现如图2.8的界面。图2.8配置EclipseME 插件 图2.9然后编译代码。第3章 运行结果3.1 运行和结果3.1.1计算器演示从菜单选择Run-run参照下图配置运行环境。图 3.1 RUN1. 加法运算 第一个操作数输入7,第二个操作数输入8,点击“=”。如图3.2所示 图3.2 加法2除法运算 第一个操作数输入20,第二个操作数输入2,点击“=”。如图3.3所示图3.3 除法3. 减法
10、运算 第一个操作数输入100,第二个操作数输入55,点击“=”。如图3.4所示图3.4 减法4. 乘法运算 第一个操作数输入5,第二个操作数输入12,点击“=”。如图3.5所示图3.5 乘法参考文献1 Bruce Eckel著.侯捷译.Java编程思想M. 机械工业出版社出版社. 2009.35-40.2 Joshua Bloce著. 潘爱民译. Effective Java中文版M.机械工业出版社. 2004.102-108.3 飞思科技产品研发中心.J2EE应用开发C.2005年6月第一版.电子工业出版社.2005.附 录程序1:CalcCanvaspackage my.calc;impo
11、rt com.nokia.mid.ui.FullCanvas;import javax.microedition.lcdui.*;import java.io.*;/* * 计算器界面 * Description: * Copyright: Copyright (c) 2005 * Company: * version 1.0 */public class CalcCanvas extends FullCanvas /*退出按钮*/ private Command cmdExit; /*标题*/ private String title = Calculator; /*字体*/ private
12、 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; priv
13、ate 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; /*存储按下的运算按钮的下标*/
14、 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(
15、); /恢复系统颜色 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(imag
16、e,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_RI
17、GHT_ARROW) /判断是否到达第一个 if(num = 15) num = 0; else num+; /向上移动,如果移动到上边界,则移动到下边界对应位置 if(keyCode = KEY_UP_ARROW) /判断是否移动到上边界,如果是则移动到下边界的对应位置 if(num - 4 15) num = num + 3 - 15; else num = num + 4; /确定按钮 if(keyCode = -5) /根据选择按钮的不同进行操作 action(); /System.out.println(num : + num); /绘图 repaint(); /* * 绘制焦点矩形
18、 * param g 图形对象 * param num 焦点编号 */ private void drawFocus(Graphics g,int num) /设置绘制颜色为红色 g.setColor(255,0,0); /设置焦点的X和Y坐标 setXandYByNum(num); /绘制选择框 g.drawRect(focusX,focusY,buttonWidth,buttonHeight); /* * 根据焦点编号,设置焦点的X和Y坐标 * param num 焦点编号 */ private void setXandYByNum(int num) focusX = 5 + (num %
19、 4) * (buttonWidth + intervalWidth); focusY = 52 + (num / 4) * (buttonHeight + intervalHeight); /* * 在用户按下确定按钮以后,根据选择按钮的不同进行操作 */ private void action() /判断焦点按钮是否为数字 if(num =0 & num 3 & num 7 & num 11) | (num = 12) /如果是数字,则将原数字乘以10,再加上现在的数字 result = result * 10 + (infonum - 0); /如果按下的是负号,则求当前数字的负数 if
20、(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 - se
21、condNum; 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 = nu
22、m; /设置第一个数字已输入,并将显示清零 flag = true; result = 0; 程序2:CalcMIDletpackage 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
23、() 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;