版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java面向对象编程实验报告题目:数组与图形化界面专业:班级:学号:姓名:太原工业学院计算机工程系年月日一、实验目的与要求1、掌握Java编程中的数组的应用2、掌握JavaGUI编程的应用以及API的查阅3、掌握JavaGUI窗体容器、布局管理器、基本组件、事件的注册实验内容JavaGUI实现如下图简单计算器三、实施步骤1.创建类CalculatorDemo,继承JFramepackageabc;importjava.awt.BorderLayout;importjava.awt.GridLayout;importjava.awt.event.ActionListener;importjava.util.Collection;importjava.util.HashMap;importjava.util.Map;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JTextField;publicclassCalculatorDemoextendsJFrame{ /*结果输入框*/privateJTextFieldresult;/*操作键之前缓存*/privateStringBuilderbeforeCache=newStringBuilder();/*操作键之后缓存*/privateStringBuilderafterCache=newStringBuilder();/*清除键*/privateJButtonclean;/*数字键*/privateJButton[]numberButs=newJButton[10];/*操作键*/privateMap<String,JButton>operKeyMap=newHashMap<String,JButton>();/*操作标识*/privatebooleanoperFlag=false; publicvoidsetOperFlag(booleanoperFlag){ this.operFlag=operFlag; } publicCalculatorDemo(){ initComp(); initMainWindow(); addListenerHandler(); }/*初始化组件*/privatevoidinitComp(){ /*清除按钮初始化*/ clean=newJButton("清除"); /*结果按钮初始化*/ result=newJTextField(10); /*数字键初始化*/ for(inti=0;i<10;i++){ numberButs[i]=newJButton(""+i); } /*操作键的初始化*/ operKeyMap.put("jia",newJButton("+")); operKeyMap.put("jian",newJButton("-")); operKeyMap.put("chen",newJButton("*")); operKeyMap.put("dengyu",newJButton("=")); operKeyMap.put("dian",newJButton(".")); operKeyMap.put("chu",newJButton("/"));} /***初始化Main窗体***/ privatevoidinitMainWindow(){ this.setSize(300,300); this.setLocation(350,350); this.add(result,BorderLayout.NORTH); JPanelkeyPanle=newJPanel(); //设置JPanel的布局(GridLayout) GridLayoutgl=newGridLayout(4,4); keyPanle.setLayout(gl); keyPanle.add(numberButs[7]); keyPanle.add(numberButs[8]); keyPanle.add(numberButs[9]); keyPanle.add(operKeyMap.get("chu")); keyPanle.add(numberButs[4]); keyPanle.add(numberButs[5]); keyPanle.add(numberButs[6]); keyPanle.add(operKeyMap.get("chen")); keyPanle.add(numberButs[1]); keyPanle.add(numberButs[2]); keyPanle.add(numberButs[3]); keyPanle.add(operKeyMap.get("jian")); keyPanle.add(numberButs[0]); keyPanle.add(operKeyMap.get("dian")); keyPanle.add(operKeyMap.get("jia")); keyPanle.add(operKeyMap.get("dengyu")); this.add(clean,BorderLayout.CENTER); this.add(keyPanle,BorderLayout.SOUTH); this.setVisible(true); } /** *注册事件监听 ***/privatevoidaddListenerHandler(){ /*主窗体事件处理*/ this.addWindowListener(newMainWindowListenerImpl()); /*清除按钮事件处理*/ clean.addMouseListener(newMouseListenerImpl()); clean.addActionListener(newCleanButtonActionListenerImpl(this)); /*数字键事件处理*/ for(JButtonnumBut:numberButs){ numBut.addMouseListener(newMouseListenerImpl()); numBut.addActionListener(newNumKeyActionListenerImpl(this)); } /*操作键事件处理*/Collection<JButton>operButtons= operKeyMap.values(); for(JButtonoperBut:operButtons){ operBut.addMouseListener(newMouseListenerImpl()); operBut.addActionListener(newOperKeyActionListenerImpl(this)); }}/*入口*/ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub newCalculatorDemo(); } publicJTextFieldgetResult(){ returnresult; } publicStringBuildergetBeforeCache(){ returnbeforeCache; } publicStringBuildergetAfterCache(){ returnafterCache; } publicJButtongetClean(){ returnclean; } publicJButton[]getNumberButs(){ returnnumberButs; } publicMap<String,JButton>getOperKeyMap(){ returnoperKeyMap; } publicbooleanisOperFlag(){ returnoperFlag; } }2.新建类CleanButtonActionListenerImpl,在类的基础上建立接口ActionListenerpackageabc;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JTextField;publicclassCleanButtonActionListenerImplimplementsActionListener{ privateCalculatorDemocal; publicCleanButtonActionListenerImpl(CalculatorDemoc){ this.cal=c; } @Override publicvoidactionPerformed(ActionEventarg0){ //TODOAuto-generatedmethodstub JTextFieldresult=cal.getResult(); /*获取输入文本*/ StringresultText= result.getText(); if(!resultText.equals("")){ //文本內容,重置為空 result.setText(""); //緩存清空 StringBuilderbeforeCache=cal.getBeforeCache(); StringBuilderafterCache=cal.getAfterCache(); beforeCache.delete(0,beforeCache.length()); afterCache.delete(0,afterCache.length()); cal.setOperFlag(false); } }}3.新建类MainWindowListenerImpl,在类的基础上建立接口WindowListenerpackageabc;importjava.awt.event.WindowEvent;importjava.awt.event.WindowListener;publicclassMainWindowListenerImplimplementsWindowListener{ @Override publicvoidwindowActivated(WindowEventarg0){ //TODOAuto-generatedmethodstub } @Override publicvoidwindowClosed(WindowEventarg0){ //TODOAuto-generatedmethodstub } /****当主窗体关闭时,推出整个程序**/ @Override publicvoidwindowClosing(WindowEventarg0){ //TODOAuto-generatedmethodstub System.out.println("退出计算器程序"); System.exit(0); } @Override publicvoidwindowDeactivated(WindowEventarg0){ //TODOAuto-generatedmethodstub } @Override publicvoidwindowDeiconified(WindowEventarg0){ //TODOAuto-generatedmethodstub } @Override publicvoidwindowIconified(WindowEventarg0){ //TODOAuto-generatedmethodstub } @Override publicvoidwindowOpened(WindowEventarg0){ //TODOAuto-generatedmethodstub System.out.print("窗体打开"); }}4.新建类MouseListenerImpl,在类的基础上建立接口MouseListenerpackageabc;importjava.awt.Color;importjava.awt.event.MouseEvent;importjava.awt.event.MouseListener;importjava.util.EventObject;importjavax.swing.JButton;publicclassMouseListenerImplimplementsMouseListener{ privateEventObjectevent; @Override publicvoidmouseClicked(MouseEventarg0){ //TODOAuto-generatedmethodstub } @Override publicvoidmouseEntered(MouseEventevent){ //TODOAuto-generatedmethodstub JButtonbt=(JButton)event.getSource(); bt.setForeground(Color.RED); } @Override publicvoidmouseExited(MouseEventevent){ //TODOAuto-generatedmethodstubJButtonbt=(JButton)event.getSource(); bt.setForeground(Color.BLACK); } @Override publicvoidmousePressed(MouseEventarg0){ //TODOAuto-generatedmethodstub } @Override publicvoidmouseReleased(MouseEventarg0){ //TODOAuto-generatedmethodstub }}5.新建类NumKeyActionListenerImpl,在类的基础上建立接口ActionListenerpackageabc;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.EventObject;importjavax.swing.JButton;importjavax.swing.JTextField;publicclassNumKeyActionListenerImplimplementsActionListener{ privateCalculatorDemocal; publicNumKeyActionListenerImpl(CalculatorDemoc){ this.cal=c; } @Override publicvoidactionPerformed(ActionEventevent){ //TODOAuto-generatedmethodstub /*获取当前操作的数字键对象*/ JButtonbut=(JButton)event.getSource(); /* *1.在没有按下操作键之前, *所有的数字键的值被缓存到beforeCache *显示到输入框中*/ /*获取数字键对应的输入值*/ StringnumVaue=but.getText(); if(!cal.isOperFlag()){ cal.getBeforeCache().append(numVaue); cal.getResult().setText(cal.getBeforeCache().toString()); }else{ cal.getAfterCache().append(numVaue);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大学导师考试模拟试卷(含答案)
- 2026年护士儿科模拟试题(含答案)
- 2026年品牌酱油模拟题及答案详解
- 筛粉工诚信品质模拟考核试卷含答案
- 2026年化工固体废物模拟试题(含答案)
- 2026年护师类之儿科护理主管护师模拟题库及及答案详解
- 通信移动终端设备装调工岗前实操知识水平考核试卷含答案
- 税务师税法二第二章个人所得税习题及答案详解
- 2026年内销产品模拟题及答案详解
- 2026-2030年中国筒仓卡车行业运营效益与投资盈利预测报告
- 雨课堂学堂在线学堂云《急救与心理技能(中南大学)》单元测试考核答案
- 安徽省江南十校2027届高三9月综合素质检测语文试卷(含答案)
- 城市道路路面养护工程竣工验收报告
- 2026秋新教材人教版四年级上册数学全册教案(教学设计)
- 部编版七年级语文上册古诗文理解性默写
- 2026 国企项目现场管控岗招聘考试参考题库 含答案
- 2025年西藏自治区林芝市网格员招聘笔试试题及答案详解
- 2026中盐安徽红四方肥业股份有限公司招聘15人笔试备考试题及答案详解
- 统编版小学语文二年级下册第五单元测试卷(含答案)
- 2026年环保隐患排查表
- 2026高级人工智能训练师(三级)理论考试核心题库(完整版)
评论
0/150
提交评论