版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. 面向对象程序设计实验报告合肥院学院计算机科学与技术系实验名称 实验四 图形用户界面与事件处理机制(一) 日期 2014/11/20 姓名/学号 专业/班级计科系/软件工程指导老师 成绩 一、实验目的:掌握Java图形Swing组件和布局管理器的使用;掌握使用Java事件处理机制的使用。 掌握图形界面的各种控件的使用,如:标签、文本框、按钮、复选框、列表框、窗框等。二、实验要求:1.采用布局管理器进行界面的布局; 2. 学会对不同的事件用相应的事件处理器; 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提材示,并给出解决办法。(附运行界面、源代码)。3、 实验内容及过程:
2、1.编写Application程序,在JFrame中加入2个按钮(JButton)和1个标签(Label),单击两个按钮,显示按钮的标签于Label。2在JApplet中加入1个文本框,1个文本区,每次在文本框中输入文本,回车后将文本添加到文本区的最后一行。3设计一个简单计算器,如下图所示。在“操作数”标签右侧的两个文本框输入操作数,当单击操作符,按钮时,对两个操作数进行运算并将结果填入到“结果”标签右侧的文本框中。1运用一种或多种布局管理器,绘制出一个简单的计算器;2. 为按钮注册事件监听器,使其点击按钮,并在显示区域同步显示当前输入或运算结果;3. 编译运行程序,检查计算器的正确性;四、实
3、验中的问题思考及讨论:(列出你实验中出现的问题,及解决的问题和解决的思路)1学生可以视个人情况完成更复杂更完善的计算器功能,通过多种布局管理方法实现更美观的界面布局。7. 编写Application程序,在JFrame中加入80个按钮,分20行4列,用GridLayout布局方式,按钮背景为黄色(Color.yellow),按钮文字颜色为红色(Color.red)。5、 实验总结: (简单、准确的总结本次实验的主要内容,个人收获)本次实验遇到很多问题,很多知识点还不怎么理解,应用还不怎么熟练,理解的不够透彻,所以在实验上处处碰到问题,不知道如何做和分析,然后通过查书和问同学把这些理解。所以在这
4、次试验之后我还会继续从网上找相关知识的视频学习。这些知识还有待继续学习。6、 源代码及运行结果1、import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class TestJFrame extends JFramepublic TestJFrame()JPanel root=new JPanel();JButton button1=new JButton(btn1);JButton button2=new JButton(bt
5、n2);JLabel label=new JLabel(label);root.add(button1);root.add(button2);root.add(label);add(root);setSize(300,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public static void main(String args) JFrame fr=new TestJFrame();fr.setVisible(true);2、import java.awt.*;import java.awt.event.*;import java
6、x.swing.*;import java.text.SimpleDateFormat;import java.util.Date;public class Test extends JFrameimplements ActionListenerprivate JLabel q,j;private JTextArea jt;private JTextField user;JPanel pane;JButton ok,canel;public Test() pane=new JPanel(); pane.setLayout(null); this.getContentPane().add(pan
7、e); q=new JLabel(请输入:); j=new JLabel(显示区域:); jt=new JTextArea(,100,120); user=new JTextField(); ok=new JButton(确定); canel=new JButton(取消); pane.add(q);pane.add(j);pane.add(jt);pane.add(user);pane.add(ok);pane.add(canel); q.setBounds(40,40,80,30); j.setBounds(40,80,80,30); user.setBounds(160,40,120,2
8、0); jt.setBounds(160,80,120,60); jt.setEditable(false); ok.setBounds(40,160,80,30); canel.setBounds(160,160,80,30); ok.addActionListener(this); canel.addActionListener(this); this.setSize(400,400); this.setVisible(true); this.setLocation(400,400); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOS
9、E); public void actionPerformed(ActionEvent e) JButton b=(JButton)e.getSource(); if(b=ok) SimpleDateFormat formatter = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);Date currentTime = new Date();/得到当前系统时间String str_date1 = formatter.format(currentTime); String u=user.getText(); jt.setText(u+n+str_date1)
10、; public static void main(String args) new Test(); 3、import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField; public class Question4 extends JFrame private String operate
11、Button = ; public Question4() / 通过继承,在构造方法里实现框架设置和事件监听 super(简单的加法运算器); / 设置title final JTextField TEXT = new JTextField3; / 声明三个文本框对象 JButton equal = new JButton(=); / 实例化一个按钮对象(事件源) JButton add = new JButton(+); JButton sub = new JButton(-); JButton mul = new JButton(*); JButton div = new JButton(
12、/); TEXT0 = new JTextField(10); TEXT1 = new JTextField(10); TEXT2 = new JTextField(10); TEXT2.setEditable(false); / 设置显示结果文本框不可编辑 add(TEXT0); / 在框架界面上按顺序增加组件 add(add); add(sub); add(mul); add(div); add(TEXT1); add(equal); add(TEXT2); add.addActionListener(new ActionListener() public void actionPerfo
13、rmed(ActionEvent e) operateButton = add; ); sub.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) operateButton = sub; ); mul.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) operateButton = mul; ); div.addActionListener(new ActionList
14、ener() public void actionPerformed(ActionEvent e) operateButton = div; ); equal.addActionListener(new ActionListener() / 计算并显示结果 public void actionPerformed(ActionEvent e) / 系统自动传入事件对象 double value1 = Double.parseDouble(TEXT0.getText(); double value2 = Double.parseDouble(TEXT1.getText(); double resu
15、lt = 0; if (add.equals(operateButton) result = value1 + value2; if (sub.equals(operateButton) result = value1 - value2; if (mul.equals(operateButton) result = value1 * value2; if (div.equals(operateButton) result = value1 / value2; TEXT2.setText( + result); / 把结果设置为显示内容 ); public static void main(St
16、ring args) Question4 app = new Question4(); app.setSize(600, 200); app.setLayout(new FlowLayout(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); app.setVisible(true); 自主实验:1.import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;import 实验六
17、.wenb.ButtonHandler;SuppressWarnings(unused)class jisan1 extends JFrameJFrame frm=new JFrame();JButton myBtn1=new JButton(+);JButton myBtn2=new JButton(-);JButton myBtn3=new JButton(*);JButton myBtn4=new JButton(/);JButton myBtn5=new JButton(1);JButton myBtn6=new JButton(2);JButton myBtn7=new JButto
18、n(3);JButton myBtn8=new JButton(4);JButton myBtn9=new JButton(5);JButton myBtn10=new JButton(6);JButton myBtn11=new JButton(7);JButton myBtn12=new JButton(8);JButton myBtn13=new JButton(9);JButton myBtn14=new JButton(0);JButton myBtn15=new JButton(.);JButton myBtn16=new JButton(=);JLabel label=new J
19、Label(操作数: );JLabel label1=new JLabel(结果:);JTextField text=new JTextField();JTextField text1=new JTextField();/JTextField text2=new JTextField();private String numStr1=;private String numStr2=;private String numsave=;private char op;private boolean firstInput=true;private boolean operatorTag1=true;p
20、rivate boolean operatorTag2=true;public jisan1()setTitle(使用jpanel);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLayout(null);label.setBounds(100, 100, 160, 80);label.setFont(new Font(,Font.BOLD,22);label.setIcon(new ImageIcon(label.jpg);label.setHorizontalAlignment(JLabel.RIGHT);label.setHorizo
21、ntalTextPosition(JLabel.CENTER);label.setVerticalTextPosition(JLabel.BOTTOM);getContentPane().add(label);label1.setBounds(100,200 , 160, 80);label1.setFont(new Font(,Font.BOLD,22);label1.setIcon(new ImageIcon(label.jpg);label1.setHorizontalAlignment(JLabel.RIGHT);label1.setHorizontalTextPosition(JLa
22、bel.CENTER);label1.setVerticalTextPosition(JLabel.BOTTOM);getContentPane().add(label1); myBtn1.setBounds(900,100,80,30); myBtn2.setBounds(900,200,80,30); myBtn3.setBounds(900,300,80,30); myBtn4.setBounds(900,400,80,30); myBtn5.setBounds(400,100,80,30); myBtn6.setBounds(500,100,80,30); myBtn7.setBoun
23、ds(600,100,80,30); myBtn8.setBounds(400,200,80,30); myBtn9.setBounds(500,200,80,30); myBtn10.setBounds(600,200,80,30); myBtn11.setBounds(400,300,80,30); myBtn12.setBounds(500,300,80,30); myBtn13.setBounds(600,300,80,30); myBtn15.setBounds(400,400,80,30); myBtn14.setBounds(500,400,80,30); myBtn16.set
24、Bounds(600,400,80,30); getContentPane().add(myBtn1); getContentPane().add(myBtn2); getContentPane().add(myBtn3); getContentPane().add(myBtn4); getContentPane().add(myBtn5); getContentPane().add(myBtn6); getContentPane().add(myBtn7); getContentPane().add(myBtn8); getContentPane().add(myBtn9); getCont
25、entPane().add(myBtn10); getContentPane().add(myBtn11); getContentPane().add(myBtn12); getContentPane().add(myBtn13); getContentPane().add(myBtn14); getContentPane().add(myBtn15); getContentPane().add(myBtn16);text.setHorizontalAlignment(JTextField.CENTER);text.setBounds(250, 125, 120, 30);getContent
26、Pane().add(text);text1.setHorizontalAlignment(JTextField.CENTER);text1.setBounds(250, 225, 120, 30);getContentPane().add(text1);/text2.setHorizontalAlignment(JTextField.CENTER);/text2.setBounds(250, 400, 120, 30);/getContentPane().add(text2);ButtonHandler btnh=new ButtonHandler();myBtn1.addActionLis
27、tener(btnh);myBtn2.addActionListener(btnh);myBtn3.addActionListener(btnh);myBtn4.addActionListener(btnh);myBtn5.addActionListener(btnh);myBtn6.addActionListener(btnh);myBtn7.addActionListener(btnh);myBtn8.addActionListener(btnh);myBtn9.addActionListener(btnh);myBtn10.addActionListener(btnh);myBtn11.
28、addActionListener(btnh);myBtn12.addActionListener(btnh);myBtn13.addActionListener(btnh);myBtn14.addActionListener(btnh);myBtn15.addActionListener(btnh);myBtn16.addActionListener(btnh);setBounds(400,200,400,200);setVisible(true);class ButtonHandler implements ActionListener Overridepublic void action
29、Performed(ActionEvent e) / TODO 自动生成的方法存根String resultStr=;String str=String.valueOf(e.getActionCommand();char ch=str.charAt(0);if(str.equals(0)|str.equals(1)|str.equals(2)|str.equals(3)|str.equals(4)|str.equals(5)|str.equals(6)|str.equals(7)|str.equals(8)|str.equals(9)|str.equals(.)if(firstInput)nu
30、mStr1=numStr1+ch;text.setText(numStr1);elsenumStr2=numStr2+ch;text.setText(numStr2);else if(str.equals(+)|str.equals(-)|str.equals(*)|str.equals(/) & operatorTag2)if(numStr2.equals() op=ch; else resultStr=evaluate(); text.setText(resultStr); numStr1=resultStr; numStr2=; op=ch; firstInput=false;/operatorTag1=false;else if(str.equals(=)resultStr=evaluate();text1.setText(resultStr);numStr1=;numStr2=;firstInput=true; private String evaluate()if(!numStr1.equals() & !numStr2.equals()float A=Float.parseFloat(numStr1);float B=Float.parseFloat(numStr2);float result=0;switch(op)case
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年宁波东方人力资源服务有限公司招聘外包工作人员备考题库及答案详解一套
- 2026年吉安市吉州区卫生健康委员会面向社会公开招聘编外工作人员36人的备考题库完整答案详解
- 2026年中海物业管理有限公司招聘备考题库含答案详解
- 2026年云南富宁县紧密型医共体归朝分院招聘编外工作人员的备考题库及完整答案详解一套
- 2026年中铁现代物流科技股份有限公司太原分公司招聘备考题库及参考答案详解
- 2026年中铝数为(成都)科技有限责任公司高校毕业生招聘备考题库及1套完整答案详解
- 2026年中冶南方(湖南)工程技术有限公司招聘备考题库及参考答案详解一套
- 小学差旅内控制度
- 中公教育内控制度
- 纪检采购内控制度汇编
- 多源医疗数据融合的联邦学习策略研究
- 仓库-拆除施工方案(3篇)
- 2025至2030中国工业边缘控制器行业运营态势与投资前景调查研究报告
- 磁电感应式传感器课件
- 防拐卖安全教育课件文库
- 2026届湖南省常德市石门一中生物高二第一学期期末统考试题含解析
- 美学概论论文
- 广东省珠海市文园中学教育集团2025-2026学年九年级上学期期中语文试题(含答案及解析)
- 2025年6月浙江省高考历史试卷真题(含答案解析)
- 【MOOC】《国际商务》(暨南大学)期末考试慕课答案
- 肺癌全程护理计划
评论
0/150
提交评论