版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计a(java)实验报告 实验名称: gui实验 实验类型: 设计型 指导教师: 刘涌 专业班级: 信安1205 姓 名: 刘追 学 号: 5120155364 实验地点: 东六e501 实验成绩: 日期:2016年11月12日实验四 gui实验一、实验目的练习java图形用户界面设计、界面布局、事件设计方法,熟悉gui 程序设计的基本技术、基本widget的使用、gui设计用户接口的方法二、实验内容设计一个类似windows计算器的application应用程序三、实验设计1、采用java application方式建立应用程序calculator的框架2、仿照windows计
2、算器,实现界面设计。将contentpane分成两个jpanel(borderlayout),其中一个放置文本框,另一个继续划分为两部分,分别以flowlayout和gridlayout的形式放置按钮。设置按钮、文本框等的text值及相应属性的修改。3、设计方法:设两个变量value1、value2分别存储运算符左右两个操作数,设置标识符flag,初值为0,此时输入的数传给value1,当按下+-*时设置flag为1,此时输入的数字传给value2;按下”=”时,根据value1,value2及op值进行计算并输出至文本框4、设计方法调节程序bug5、点击事先设计的计算器数字按钮,显示框出现相
3、应数字;点击“+-*/”时,显示框出现相应字符;输入计算式后再输入“=”,显示框出现计算结果,基本实现windows计算器功能四、实验过程1、采用java application方式建立应用程序框架2、仿照windows计算器,利用多种布局方式实现界面设计 3、组装操作数和运算符,完成简单的整数加、减、乘、除运算4、通过gettxt()方法来获得显示框txt内容,settxt()方法把字符显示在txt框内;通过integer.parseint(string)实现字符串到整型的转换,string.valueof(int)实现整型到字符串的转换。5、遇到的问题:显示txt框无法显示两位及以上的数字
4、。解决方法:txt.settxt(string.valueof(num*10+btnnum);把原来的数字*10,再加上要显示的字符并且将整型数字转化为字符串。五、实验结果 运行程序可得到一与windows计算器界面类似(形式由自己设定的计算器,可实现加、减、乘、除简单数学运算。 六、讨论与分析 1.通过这次实验懂得了gui的基本设计过程和其实现 2.对java的图形用户界面设计、事件设计方法有了进一步的了解3.学会了制作简单的计算器七、附录:关键代码(给出适当注释,可读性高)public class calculator extends javax.swing.jframe public c
5、alculator() initcomponents();private void initcomponents() /设置主面板按钮menubar = new javax.swing.jmenubar();filemenu = new javax.swing.jmenu();openmenuitem = new javax.swing.jmenuitem();savemenuitem = new javax.swing.jmenuitem();saveasmenuitem = new javax.swing.jmenuitem();exitmenuitem = new javax.swing
6、.jmenuitem();helpmenu = new javax.swing.jmenu();contentsmenuitem = new javax.swing.jmenuitem();aboutmenuitem = new javax.swing.jmenuitem();editmenu = new javax.swing.jmenu();cutmenuitem = new javax.swing.jmenuitem();copymenuitem = new javax.swing.jmenuitem();pastemenuitem = new javax.swing.jmenuitem
7、();deletemenuitem = new javax.swing.jmenuitem();jlabel1.settext(jlabel1);jbutton1.settext(jbutton1);jcheckbox1.settext(jcheckbox1);jbutton2.settext(jbutton2);javax.swing.grouplayout jpanel1layout = new javax.swing.grouplayout(jpanel1);jpanel1.setlayout(jpanel1layout);jpanel1layout.sethorizontalgroup
8、(jpanel1layout.createparallelgroup(javax.swing.grouplayout.alignment.leading).addgap(0, 100,short.max_value);jpanel1layout.setverticalgroup(jpanel1layout.createparallelgroup(javax.swing.grouplayout.alignment.leading).addgap(0, 100,short.max_value);jcheckbox2.settext(jcheckbox2);jcheckbox2.addactionl
9、istener(new java.awt.event.actionlistener() public void actionperformed(java.awt.event.actionevent evt) jcheckbox2actionperformed(evt););setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close);setcursor(new java.awt.cursor(java.awt.cursor.default_cursor);txttext.setfont(new java.awt.font
10、(微软雅黑, 0, 24);txttext.sethorizontalalignment(javax.swing.jtextfield.right);txttext.settext(0);txttext.setautoscrolls(false);txttext.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(java.awt.event.actionevent evt) );filemenu.settext(u67e5u770b);openmenuitem.settext(op
11、en);filemenu.add(openmenuitem);savemenuitem.settext(save);filemenu.add(savemenuitem);saveasmenuitem.settext(save as .);filemenu.add(saveasmenuitem);exitmenuitem.settext(exit);exitmenuitem.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(java.awt.event.actionevent evt
12、) exitmenuitemactionperformed(evt););filemenu.add(exitmenuitem);menubar.add(filemenu);helpmenu.settext(help);contentsmenuitem.settext(contents);helpmenu.add(contentsmenuitem);aboutmenuitem.settext(about);helpmenu.add(aboutmenuitem);editmenu.settext(edit);cutmenuitem.settext(cut);editmenu.add(cutmenu
13、item);copymenuitem.settext(copy);editmenu.add(copymenuitem);pastemenuitem.settext(paste);editmenu.add(pastemenuitem);deletemenuitem.settext(delete);editmenu.add(deletemenuitem);helpmenu.add(editmenu);menubar.add(helpmenu);setjmenubar(menubar);javax.swing.grouplayout layout = new javax.swing.grouplay
14、out(getcontentpane();getcontentpane().setlayout(layout);layout.sethorizontalgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.leading).addgroup(layout.createsequentialgroup().addcontainergap().addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.leading,false).addgr
15、oup(layout.createsequentialgroup().addcomponent(.addgap(21, 21, 21);layout.setverticalgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.leading).addgroup(layout.createsequentialgroup().addgap(26, 26, 26).addcomponent(txttext,javax.swing.grouplayout.preferred_size,64,javax.swing.grou
16、playout.preferred_size).addgap(18, 18, 18).addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.baseline).addcomponent(/其他按键功能设置已省略jbutton26,javax.swing.grouplayout.preferred_size,38,javax.swing.grouplayout.preferred_size).addcomponent(jbutton32,javax.swing.grouplayout.preferred_siz
17、e,83,javax.swing.grouplayout.preferred_size).addcontainergap(60,short.max_value);pack();boolean isoperpressed = false;/为true时输入下一个数字时清屏int oper = 0;/1实现加, 2实现减, 3实现乘, 4实现除, 5实现取余int number1 = 0;/参与运算的第一个数字,保存在number1中private void jbutton8actionperformed(java.awt.event.actionevent evt) /按键,实现回退功能stri
18、ng s = txttext.gettext();/获取屏幕上的字符串int num = integer.parseint(s);/转换为整形num = num / 10;s = integer.tostring(num);/转换为字符型txttext.settext(s);/显示到屏幕上private void jbutton9actionperformed(java.awt.event.actionevent evt) /c按键,实现清屏功能txttext.settext(0);private void jbutton10actionperformed(java.awt.event.act
19、ionevent evt) /ce按键,实现初始化功能txttext.settext(0);isoperpressed = false;oper = 0;number1 = 0;private void jbutton17actionperformed(java.awt.event.actionevent evt) /取余if(oper !=0)/if else 语句实现连运算 下同dengyu();oper=5;elsestring s = txttext.gettext();number1 = integer.parseint(s);/保存屏幕上的数字oper = 5;isoperpres
20、sed = true;/清屏private void jbutton16actionperformed(java.awt.event.actionevent evt) /除if(oper !=0)dengyu();oper=4;elsestring s = txttext.gettext();number1 = integer.parseint(s);oper = 4;isoperpressed = true;private void jbutton21actionperformed(java.awt.event.actionevent evt) /乘if(oper !=0)dengyu();
21、oper=3;elsestring s = txttext.gettext();number1 = integer.parseint(s);oper = 3;isoperpressed = true;private void jbutton26actionperformed(java.awt.event.actionevent evt) /减if(oper !=0)dengyu();oper=2;elsestring s = txttext.gettext();number1 = integer.parseint(s);oper = 2;isoperpressed = true;private
22、 void jbutton31actionperformed(java.awt.event.actionevent evt) /加if(oper !=0)dengyu();oper=1;elsestring s = txttext.gettext();number1 = integer.parseint(s);oper = 1;isoperpressed = true;private void jbutton32actionperformed(java.awt.event.actionevent evt) / =dengyu();public void dengyu()/等于方法,在屏幕上显示
23、出计算结果int number2;string s;isoperpressed = true;switch (oper) case 0:break;case 1:number2 = integer.parseint(txttext.gettext();number1 = number1 + number2;s = integer.tostring(number1);txttext.settext(s);/显示到屏幕上,其他数字输出显示方式同oper = 0;break;private void jbutton15actionperformed(java.awt.event.actioneven
24、t evt) /数字9按键if (!isoperpressed) /原来的数*10再加上按上去的数显示到屏幕上string s = txttext.gettext();int num = integer.parseint(s);num = num * 10 + 9;s = integer.tostring(num);txttext.settext(s); else /点击清屏并显示点击的数字txttext.settext(9);isoperpressed = false;private void jbutton14actionperformed(java.awt.event.actioneve
25、nt evt) if (!isoperpressed) string s = txttext.gettext();int num = integer.parseint(s);num = num * 10 + 8;s = integer.tostring(num);txttext.settext(s); else txttext.settext(8);isoperpressed = false;private void jbutton13actionperformed(java.awt.event.actionevent evt) if (!isoperpressed) string s = t
26、xttext.gettext();int num = integer.parseint(s);num = num * 10 + 7;s = integer.tostring(num);txttext.settext(s); else txttext.settext(7);isoperpressed = false;private void jbutton20actionperformed(java.awt.event.actionevent evt) if (!isoperpressed) string s = txttext.gettext();int num = integer.parse
27、int(s);num = num * 10 + 6;s = integer.tostring(num);txttext.settext(s); else txttext.settext(6);isoperpressed = false;private void jbutton19actionperformed(java.awt.event.actionevent evt) if (!isoperpressed) string s = txttext.gettext();int num = integer.parseint(s);num = num * 10 + 5;s = integer.to
28、string(num);txttext.settext(s); else txttext.settext(5);isoperpressed = false;private void jbutton18actionperformed(java.awt.event.actionevent evt) if (!isoperpressed) string s = txttext.gettext();int num = integer.parseint(s);num = num * 10 + 4;s = integer.tostring(num);txttext.settext(s); else txt
29、text.settext(4);isoperpressed = false;private void jbutton25actionperformed(java.awt.event.actionevent evt) if (!isoperpressed) string s = txttext.gettext();int num = integer.parseint(s);num = num * 10 + 3;s = integer.tostring(num);txttext.settext(s); else txttext.settext(3);isoperpressed = false;private void jbutton24actionperformed(java.awt.event.actionevent evt) if (!isoperpressed) string s = txttext.gettext();int num = integer
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安全管理人员安全培训试题及答案
- 2025年关于脚码的测试题及答案
- 2025年新版守规矩试题及答案
- 2025年物流师考试综合练习题附答案
- 2026年法务助理招录考前模拟公基题库(附解析)
- 2026年许昌体育真题试题及答案
- 2025年旅游团购测试题及答案
- (2025年)保育员高级测试题库及答案
- 动物疫病防治员练习题库+参考答案解析
- 2025年新版安全防范的试题及答案
- 2026.5.7 货车自动化机器人装车机
- DB62T 3136-2023 公路沥青路面施工技术规范
- 江苏省南通市海安市2024-2025学年高二下学期4月期中生物试题(原卷版+解析版)
- 2025年入团考试团队效果试题及答案
- 疟疾防控知识试题及答案
- 肝包虫超声课件
- 西美附中英语考题及答案
- 东南大学版三基内科
- 倪海厦汉唐药方全集
- 河北嘉恒隆生物科技有限责任公司建设年产 10000 吨食品用明胶、5000 吨食用蛋白粉、5000 吨宠物饲料和 5000 吨油脂资源综合利用项目环境影响报告表
- 饭店送餐合同协议书
评论
0/150
提交评论