Java实验报告三数组与图形用户界面_第1页
Java实验报告三数组与图形用户界面_第2页
Java实验报告三数组与图形用户界面_第3页
Java实验报告三数组与图形用户界面_第4页
Java实验报告三数组与图形用户界面_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论