《《Java程序设计》实验报告 实验.doc》由会员分享,可在线阅读,更多相关《《Java程序设计》实验报告 实验.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java程序设计实验报告-实验3实验室: 实验楼三、四号机房 2014 年 06 月05 日学院计算机与信息学院专业班级姓名成绩课程名称Java程序设计实验项目名 称 实验三 图形用户界面编程 指导教师教师评语 教师签名: 年 月 日一、实验目的1学习编写带有图形化界面的程序。2. 掌握JFrame、JLabel、JTextField、JButton和JPanel等组件的使用方法。3. 掌握事件处理的方法。1. 掌握常用的布局管理器。二、实验原理1设计一个简单的图形化界面计算器程序,实现两个实数的四则运算。2创建2个文本字段,用于输入操作数;创建1个不可编辑的文本字段,用于输出运算结果;创建4
2、个按钮,用于输入运算符。3对按钮出发动作进行处理。4将前面创建的组建添加到框架中,合理布局,给文本字段加上说明三、使用硬件、软件环境PC 计算机一台,配置为CPU为1.5G,内存为512M,硬盘为40G,安装WindowsXP操作系统。另外,使用JCreator,JDK1.6.0等软件 四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)1:计算器的源程序:/简易计算器import java.awt.BorderLayout; import java.awt.GridLayout;import java.awt.TextField;import java.awt.event.Acti
3、onEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class CalcultorOne JFrame frame;/新建窗体对象 JButton buttonzero,buttondot,buttonequal;/新建按钮0.= JButton buttonplus,buttonminus,buttonmultiple,buttondevision, buttonsin,buttont
4、ozero;/新建按钮+-*/sin和归零按钮 JButton buttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix, buttonseven,buttoneight,buttonnine;/新建数字按钮0123456789 JPanel panelwest,panelcenter,paneleast;/新建三个面板 TextField tf;/新建文本区域对象 public CalcultorOne() /初始化对象 tf=new TextField(30);/构造空文本字段,字符宽度为30 frame =new JF
5、rame(CalculatorOne);/构造窗体对象,名称为Calculator panelcenter=new JPanel();/构造面板,放到窗体中央 panelwest=new JPanel();/构造面板,放到窗体西边 paneleast=new JPanel();/构造面板,放到窗体东边 Handle h=new Handle();/Handle类为事件监听类 /创建数字按钮对象,1、2、3、4、5、6、7、8、9 buttonone=new JButton(1); buttontwo=new JButton(2); buttonthree=new JButton(3); but
6、tonfour=new JButton(4); buttonfive=new JButton(5); buttonsix=new JButton(6); buttonseven=new JButton(7); buttoneight=new JButton(8); buttonnine=new JButton(9); panelcenter.setLayout(new GridLayout(3,3);/设置面板布局为网格布局,3行3列 /将数字按钮添加到中间面板 panelcenter.add(buttonone); panelcenter.add(buttontwo); panelcente
7、r.add(buttonthree); panelcenter.add(buttonfour); panelcenter.add(buttonfive); panelcenter.add(buttonsix); panelcenter.add(buttonseven); panelcenter.add(buttoneight); panelcenter.add(buttonnine); /为10个按钮注册事件监听器 buttonone.addActionListener(h); buttontwo.addActionListener(h); buttonthree.addActionListe
8、ner(h); buttonfour.addActionListener(h); buttonfive.addActionListener(h); buttonsix.addActionListener(h); buttonseven.addActionListener(h); buttoneight.addActionListener(h); buttonnine.addActionListener(h); /构造按钮0.=,注册事件监听器,设置1行3列的布局,添加到到西边的面板 buttonzero=new JButton(0); buttondot=new JButton(.); but
9、tonequal=new JButton(=); buttonzero.addActionListener(h); buttondot.addActionListener(h); buttonequal.addActionListener(h); panelwest.setLayout(new GridLayout(3,1); panelwest.add(buttonzero); panelwest.add(buttondot); panelwest.add(buttonequal); /构造操作按钮+-*/sin0,其中0为归零按钮 buttonplus=new JButton(+); bu
10、ttonminus=new JButton(-); buttonmultiple=new JButton(*); buttondevision=new JButton(/); buttonsin=new JButton(sin); buttontozero=new JButton(0); paneleast.setLayout(new GridLayout(3,1);/设置西边的布局为3行1列 /将操作按钮+-*/sin0添加到西边的面板中 paneleast.add(buttonplus); paneleast.add(buttonminus); paneleast.add(buttonmu
11、ltiple); paneleast.add(buttondevision); paneleast.add(buttonsin); paneleast.add(buttontozero); /为操作按钮+-*/sin0注册监听器 buttonplus.addActionListener(h); buttonminus.addActionListener(h); buttonmultiple.addActionListener(h); buttondevision.addActionListener(h); buttonsin.addActionListener(h); buttontozero
12、.addActionListener(h); frame.setLayout(new BorderLayout();/设置窗体为边界布局 frame.add(paneleast,East);/将东边面板paneleast添加到窗体的东边 frame.add(tf,BorderLayout.NORTH); /将tf文本区域添加到窗体的北边,即顶部 frame.add(panelwest,BorderLayout.WEST);/将panelwest面板添加到窗体西边 frame.add(panelcenter,BorderLayout.CENTER);/将panelcenter面板添加到窗体中间
13、frame.pack();/设置窗体大小,适合其子组件的首选大小和布局 frame.setLocation(500,500);/设置窗体显示位置为(500,500) frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置布局窗体默认关闭方式 frame.setVisible(true);/设置窗体可见 public static void main(String args) new CalcultorOne();/主方法中新建对象 class Handle implements ActionListener/实现动作监听器类 int b
14、iaozhi=0;/此标志标志加减乘除操作 double flag1=0,flag2=0,flag3=0;/flag1、flag2为两个操作数,flag3为结果 Override public void actionPerformed(ActionEvent e) /方法重写 try/此处可能会产生异常,用try、catch捕捉异常,不用处理 if(e.getSource()=buttondot)/小数点 tf.setText(0.); if(e.getSource()=buttontozero)/归零操作 tf.setText(); if(e.getSource()=buttonzero)/
15、按键0操作 tf.setText(tf.getText()+0); flag1=Double.parseDouble(tf.getText();/将文本区域转换成Double类型,赋给flag1 if(e.getSource()=buttonone)/按键1操作 tf.setText(tf.getText()+1); flag1=Double.parseDouble(tf.getText(); else if(e.getSource()=buttontwo)/按键2操作 tf.setText(tf.getText()+2); flag1=Double.parseDouble(tf.getTex
16、t(); else if(e.getSource()=buttonthree)/按键3操作 tf.setText(tf.getText()+3); flag1=Double.parseDouble(tf.getText(); else if(e.getSource()=buttonfour)/按键4操作 tf.setText(tf.getText()+4); flag1=Double.parseDouble(tf.getText(); else if(e.getSource()=buttonfive)/按键5操作 tf.setText(tf.getText()+5); flag1=Double
17、.parseDouble(tf.getText(); else if(e.getSource()=buttonsix)/按键6操作 tf.setText(tf.getText()+6); flag1=Double.parseDouble(tf.getText(); else if(e.getSource()=buttonseven)/按键7操作 tf.setText(tf.getText()+7); flag1=Double.parseDouble(tf.getText(); else if(e.getSource()=buttoneight)/按键8操作 tf.setText(tf.getT
18、ext()+8); flag1=Double.parseDouble(tf.getText(); else if(e.getSource()=buttonnine)/按键9操作 tf.setText(tf.getText()+9); flag1=Double.parseDouble(tf.getText(); if(e.getSource()=buttonplus)/加法操作 tf.setText(); flag2=flag1; biaozhi=0; if(e.getSource()=buttonminus)/减法操作 tf.setText(); flag2=flag1; biaozhi=1;
19、 if(e.getSource()=buttonmultiple)/乘法操作 tf.setText(); flag2=flag1; biaozhi=2; if(e.getSource()=buttondevision)/除法操作 tf.setText(); flag2=flag1; biaozhi=3; if(e.getSource()=buttonsin)/正弦操作 flag3=Math.sin(flag1); tf.setText(flag3+); if(e.getSource()=buttonequal)/等号操作,利用biaozhi判断进行相应加减乘除操作 if(biaozhi=0)
20、flag3=flag1+flag2; if(biaozhi=1) flag3=flag1-flag2; if(biaozhi=2) flag3=flag1*flag2; if(biaozhi=3) flag3=flag1/flag2; tf.setText(flag3+); catch(Exception ex) 2、实验测试结果截图:实验思考题:1AWT和Swing布局管理器和事件处理机制是什么样的?答:Swing和AWT在事件处理机制上是类似的,窗口组件的树状结构也是类似的。图形用户界面系统在事件处理设计上有两大类,一类是单线程模型,一类是多线程模型。在事件处理机制上,二者都是遵循单线程规则。五、实验结论、分析、思考题与心得体会 在编写复杂程序过程中,首先要理清思路 ,当然,其中各种各样的小的差错不计其数,例如忘记设 setVisible(true)导致没法显示,有时甚至出现已经定义的符号但运行程序却给出未定义的错误等,编程是需要很大的耐心和恒心,但是通过这次实验 锻炼了自己应用程序的能力,同时强化了对图形化界面编程的把握与理解。