收藏 分销(赏)

j2me计算器设计(终稿)-学位论文.doc

上传人:胜**** 文档编号:3050723 上传时间:2024-06-14 格式:DOC 页数:28 大小:215KB 下载积分:10 金币
下载 相关 举报
j2me计算器设计(终稿)-学位论文.doc_第1页
第1页 / 共28页
j2me计算器设计(终稿)-学位论文.doc_第2页
第2页 / 共28页


点击查看更多>>
资源描述
目录 摘 要 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运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。J2ME技术在1999年的JavaOne Developer Conference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。 本文通过介绍J2ME平台的搭建,从而能实现计算器的设计。 关键词:J2ME,搭建,实现设计 - 25 - 第1章 绪论 在今天计算已经无处不在。越来越多的人开始认为,经过了许多人共享一台计算机的大型主机时代,一人一台计算机的个人PC时代之后,下一个时代就是一人多台计算设备的普及计算时代(Ubiquitous Computing,IBM称之为Pervasive Computing)。计算设备将从单一的PC扩展到各种各样的大小和功能,从家庭消费电子产品,到个人随身携带,穿着,车载的各种移动信息处理设备,多样化是这个领域的最大特点。网络是这个领域最重要的增值特性。当手机可以随时随地无线上网,PDA可以和个人PC同步,车载PC可以获得网上GPS地图数据时,这些孤立的设备才能够发挥最大的作用。 而平台无关性和网络功能正是J2ME的设计目标和能力(事实上,Java最初的设计目标就是用于消费电子领域,但是后来在PC和服务器上得到了发展)。一次编写,到处运行的平台无关性,对网络,多重设备间联网的机制(JINI)显然对这个领域是至关重要的软件条件。这个领域内的Java标准就是J2ME。 明天的计算将进入普及计算时代。各种消费电子产品,包括智能手机,PDA,Web-TV,将来的信息家电等等将实现随时随地的计算。这是一个异常广阔和丰富多彩的领域,其设备极度多样化而且都将在网络中,Java技术的跨平台性和网络功能在这里大有用武之地。这就是J2ME,这一丰富多彩的领域中生机勃勃的技术。 第2章 J2ME计算器 2,1J2ME的基本概念 J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE、J2EE并称。 Java2版本书籍 根据Sun的定义:J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。J2ME技术在1999年的JavaOne Developer Conference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。 2.2J2ME平台的搭建 2.2.1构建J2ME平台 1.从如下地址下载相关的软件。 J2SDK1.4.2_03+WTK2.1: Eclipse3.0RC2 http://www.eclipse.org EclipseME0.4.1 2. 按照顺序依次安装J2SDK1.4.2_03、WTK2.1、Eclipse3.0RC2和EclipseME0.4.1,安装完j2sdk后应该设置环境变量classpath、path和JAVA_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:\eclipse\plugin里面,重新启动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,然后填写项目的名字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.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 RUN 1. 加法运算 第一个操作数输入7,第二个操作数输入8,点击“=”。如图3.2所示 图3.2 加法 2.除法运算 第一个操作数输入20,第二个操作数输入2,点击“=”。如图3.3所示 图3.3 除法 3. 减法运算 第一个操作数输入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:CalcCanvas package my.calc; import com.nokia.mid.ui.FullCanvas; import javax.microedition.lcdui.*; import java.io.*; /** * 计算器界面 * <p>Description: </p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: </p> * @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); //设置焦点的X和Y坐标 setXandYByNum(num); //绘制选择框 g.drawRect(focusX,focusY,buttonWidth,buttonHeight); } /** * 根据焦点编号,设置焦点的X和Y坐标 * @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; } } } } 程序2:CalcMIDlet 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; } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服