




免费预览已结束,剩余7页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
广 州 大 学实 验 报 告学 院 工商管理学院 专业、班级 电子商务 姓名、学号 课程名称 Java语言程序设计 项目名称 GUI 程序设计 实验时间:2013年 06月 09日 GUI 程序设计 实验报告开课实验室:文俊东6062013年06月09日学院工商管理学院年级、专业、班姓名成绩课程名称Java语言程序设计实验项目名 称GUI 程序设计指导教师签名一、实验目的(1) 掌握GUI 程序设计的基本技术;(2) 掌握基本Widget的使用;(3) 掌握通GUI设计用户接口的方法;二、实验原理(算法分析(包括流程图))1. CalcFace类按照Lcd类进行改造(将两个类中的相关功能合并);2. 由于GUI程序已是消息驱动的,程序运行后就处于一个循环中,因此原仿真程序中Calcface中的input()方法以及Calculator中的on()方法就可弃之不用了。3.改造Toyface,为计算器界面布局,并将Toyface与Runcale合并使之能与calculator相连。4. System.out.println需改成向Jlabel对象输出的语句三、实验过程原始记录(数据、图表、计算等)1.运行程序2.进行运算 3.计算器其他按钮的功能实现1)C的功能实现 按C后计算机只录入9*; 2)N的功能实现 按N后结果变成-15 3)A的功能实现 按A后清空归零 四、实验感悟本次实验相对比较简单,只需要安排好显示界面和将两个合并之后再对一些细节部分进行修改就可以了。完成实验后我对显示界面的布局更加了解了。五、附录(自己实现的源代码)/ CalcFace.java /import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;import javax.swing.BorderFactory;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.border.CompoundBorder;class CalcFace extends JPanel implements ActionListener public CalcFace(String k, byte pr)keys = k; prec = pr+; nbuf = new StringBuffer(prec);reset1();errorMode=false;errorStr=;d = new JLabel(in, JLabel.RIGHT);setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLoweredBevelBorder(), BorderFactory.createEmptyBorder(5,10, 5, 10);setLayout(new BorderLayout(); /设置布管理器reset2();add(d);addMouseListener(new ClickHandler(this); /注册事件监听器 public void setCalc(Calculator ca)calc = ca; public void showNumber(String s) d.setText(hl+prompt + s+ht); public void showOp(char op) /如果输入的str为空,则清除errorMode /相当于主控模决发送一个消息给计算器,使其可知道当前计算器对象当前的状态 public void errorInput(String str) if(str.equals() errorMode=false; errorStr=; else errorMode=true; errorStr=str; prompt=prompt+( +str+ ); public void showStatus(String e) prompt=e; private void enter(char c) /当计算器处于溢出状态时,只充许其在下面这段代码中执行。 if(errorMode) /进入errormode,只接收规定字符 if(errorStr.indexOf(c)=-1) reset1(); return; /计算器处于正常状态时,下面这段代码会被执行 if ( keys.indexOf(c) != -1 ) / if c an operatorshowOp(c);if ( num ) calc.enterNumber(extractNumber(), c);elsecalc.enterOp(c);reset1(); else if ( nump(c) & nbuf.length() prec ) num = true;buildNumber(c); private boolean nump(char c) return( c = . | Character.isDigit(c) ); private String extractNumber() return (nbuf.length() = 0) ? 0: nbuf.toString(); private void buildNumber(char c)int i = nbuf.length();if ( i = 0 & c = 0) return; / ignore leading zerosif ( c = . ) / at most one decimal pointif ( ! before_point ) return;else before_point = false;nbuf.append(c); private void reset1()before_point = true;nbuf.setLength(0);num = false; protected void reset2() count = 0;in = 0;d.setText(hl + in + ht);public void actionPerformed(ActionEvent e) String cmd = e.getActionCommand(); int i=cmd.charAt(0);if (cmd.equals(reset2)reset2();else if (count 13) if (count = 0)in = cmd;elsein += cmd;d.setText(hl + in + ht);count+;enter(char)i); public void doMouseEntered() d.setText(选择数字进行运算); public void doMouseExited() d.setText(鼠标不在显示区域); protected int count = 0; protected String in = 0; protected JLabel d; protected String hl = ; protected String ht = ; private String prompt=Calc: ; private Calculator calc; private String keys; / keys recognized private StringBuffer nbuf; / buffer for input number private String errorStr; /用于记录在计算器处于溢出状态时,充许用户输入的符号 private boolean errorMode; /用于记录计算器当前的状态,正常或溢出状态 private byte prec; / max no of chars displayable private boolean before_point = true; private boolean num = false;import java.awt.GridLayout;import javax.swing.JFrame;/ RunCalc.java /public class RunCalc public static void main(String args) throws java.io.IOException CalcEng e = new CalcEng();CalcFace f = new CalcFace(e.keys(), e.precision();Calculator x = new Calculator(e, f);JFrame win = new JFrame(Calc);win.addWindowListener(new WindowHandler(win);Keypad keypad = new Keypad(f); /此处f 为原Toyface中的lcd/ One column grid, 布局设置成一列win.setLayout(new GridLayout(0, 1);/ LCD和Keyboard各占一行keypad.setLayout(new GridLayout(4, 4);win.getContentPane().add(f);win.getContentPane().add(keypad);win.pack();win.setVisible(true);return; import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JPanel;class Keypad extends JPanel Keypad(ActionListener f) r7 = new JButton(A);r7.setVerticalTextPosition(JButton.CENTER);r7.setHorizontalTextPosition(JButton.CENTER);r7.setActionCommand(reset2);/计算机清归零r7.addActionListener(f);add(r7);r9 = new JButton(N);r9.setVerticalTextPosition(JButton.CENTER);r9.setHorizontalTextPosition(JButton.CENTER);r9.addActionListener(f);add(r9);r1 = new JButton(C);r1.setVerticalTextPosition(JButton.CENTER);r1.setHorizontalTextPosition(JButton.CENTER);r1.setActionCommand(C);r1.addActionListener(f);add(r1);r2 = new JButton(+);r2.setVerticalTextPosition(JButton.CENTER);r2.setHorizontalTextPosition(JButton.CENTER);r2.addActionListener(f);add(r2);r3 = new JButton(-);r3.setVerticalTextPosition(JButton.CENTER);r3.setHorizontalTextPosition(JButton.CENTER);r3.addActionListener(f);add(r3);r4 = new JButton(*);r4.setVerticalTextPosition(JButton.CENTER);r4.setHorizontalTextPosition(JButton.CENTER);r4.addActionListener(f);add(r4);r5 = new JButton(/);r5.setVerticalTextPosition(JButton.CENTER);r5.setHorizontalTextPosition(JButton.CENTER);r5.addActionListener(f);add(r5);r6 = new JButton(=);r6.setVerticalTextPosition(JButton.CENTER);r6.setHorizontalTextPosition(JButton.CENTER);r6.addActionListener(f);add(r6);r8 = new JButton(.);r8.setVerticalTextPosition(JButton.CENTER);r8.setHorizontalTextPosition(JButton.CENTER);r8.addActionListener(f);add(r8);for (int i = 10; i 0; i-) bi - 1 = new JButton( + (i-1);bi - 1.setVerticalTextPosition(JButton.CENTER);bi - 1.setHorizontalTextPosition(JButton.CENTER);bi - 1.setActi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 前期策划合同范本
- 养牛设备出售合同范本
- 保障性住房购房合同范本
- 加油卡租车合同范本
- 协议单位优惠合同范例
- 医药物流合同范本
- 修叉车合同范本
- 劳务分包协议合同范本
- 劳务合同范本已填
- 医院耗材合同范本
- Python金融数据挖掘与分析实战课程教案教学教案
- 2024年地铁车站照明系统安装与维护劳务分包协议3篇
- 脱硫自动化控制-洞察分析
- 医务人员医德医风培训
- 人教版初中历史八上-第2课 第二次鸦片战争
- 2024湖北省金口电排站管理处招聘易考易错模拟试题(共500题)试卷后附参考答案
- 油井供水合同范例
- 2025年人教部编版语文五年级下册教学计划(含进度表)
- 全国计算机等级考试一级试题及答案(5套)
- 银河证券-科创板认知测评题目及答案
- 产品方案设计模板
评论
0/150
提交评论