




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、院系:计算机科学学院专业:年级:课程名称:姓名(学号):指导教师:2016年 月 日年级班号组号专业实验名称实验室实 验 目 的 和 要 求一.实验目的:1. 熟悉Java集成开发环境 Eclipse (或NetBeans等);2. 掌握Java系统图形用户界面的基本工作原理;3. 掌握Java系统图形用户界面的设计步骤;4. 掌握图形用户界面的事件响应机制;5. 掌握图形用户界面的各种常用的基本组件的使用方法及事件响应;6. 掌握图形用户界面各种布局策略的设计与使用;7. 掌握绘制各种基本图形的方法;8. 掌握鼠标事件编程方法;二实验要求:(填写具体的题目要求。)import java.aw
2、t.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing .J Button;import javax.swing.JFrame;import javax.swing .J Panel;import javax.swing.JTextField;但还不支持键盘操作* 一个计算器,与 Windows附件自带计算器的标准版功能、界面相仿*/public
3、 class Calculator extends JFrame implements ActionListener /*计算器上的键的显示名字*/private final String KEYS = 7, 8, 9, /, sqrt, 4, 5, 6,* % 1 2 3 1/x 0 +/ + _ ;/*计算器上的功能键的显示名字*/private final String COMMAND _ Backspace, CE, C ;/*计算器左边的M的显示名字*/private final String M _ , MC, MR, MS, M+ ;/*计算器上键的按钮*/private JBu
4、tton keys _ new JButtonKEYS.Iength;概 要 设 计( 整 体 流 程 )/*计算器上的功能键的按钮*/private JButton commands _ new JButtonCOMMAND.Iength;/*计算器左边的M的按钮*/private JButton m _ new JButton M.l ength;/*计算结果文本框*/private JTextField resultText _ new JTextField(O);/标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字private boolean firstDigit
5、_ true;/计算的中间结果。private double resultNum _ 0.0;/当前运算的运算符private String operator _ _;/操作是否合法private boolean operateValidFlag _ true;/*构造函数*/public Calculator。super();/初始化计算器init();/设置计算器的背景颜色this.setBackground(Color 丄IGHT_GRAY);this.setTitle(” 计算器);/在屏幕(500, 300)坐标处显示计算器this.setLocation(500, 300);/不许
6、修改计算器的大小this.setResizable(false);/使计算器中各组件大小合适this.pack();/*初始化计算器*/private void init() /文本框中的内容采用右对齐方式resultText.setHorizontalAlignment(JTextField.RIGHT);/不允许修改结果文本框resultText.setEditable(false);详细设计算法实现/设置文本框背景颜色为白色resultText.setBackground(Color.WHITE);/初始化计算器上键的按钮,将键放在一个画板内JPanel calckeysPanel =
7、new JPanel();/用网格布局器,4行,5列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3);for (int i = 0; i KEYS.length; i+) keysi = new JButton(KEYSi);calckeysPanel.add(keysi); keysi.setForeground(Color.blue);/运算符键用红色标示,其他键用蓝色表示keys3.setForeground(Color.red);keys8.setForeground(C
8、olor.red);keys13.setForeground(Color.red);keys18.setForeground(Color.red);keys19.setForeground(Color.red);/初始化功能键,都用红色标示。将功能键放在一个画板内JPanel commandsPanel = new JPanel();/用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素commandsPanel.setLayout(new GridLayout(1,3, 3, 3);for (int i = 0; i COMMAND.Iength; i+)
9、 commandsi = new JButton(COMMANDi);commandsPanel.add(commandsi); commandsi.setForeground(Color.red);/初始化M键,用红色标示,将 M键放在一个画板内JPanel calmsPanel = new JPanel();/用网格布局管理器,5行,1列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素calmsPanel.setLayout(new GridLayout(5, 1,3, 3);for (int i = 0; i M.length; i+) mi = new JButton(
10、Mi);calmsPanel.add(mi); mi.setForeground(Color.red);/下面进行计算器的整体布局,将calckeys和command画板放在计算器的中部,/将文本框放在北部,将calms画板放在计算器的西部。/新建一个大的画板,将上面建立的command和calckeys画板放在该画板内JPanel panel1 = new JPanel();/画板采用边界布局管理器,画板里组件之间的水平和垂直方向上间隔都为3象素panel1.setLayout(new BorderLayout(3, 3);panel1.add(North, commandsPanel);p
11、anel1.add(Center, calckeysPanel);实 验 结 果 及 分 析/建立一个画板放文本框JPanel top = new JPanel();top.setLayout(new BorderLayout();top.add(Center, resultText);/整体布局getContentPane().setLayout(new BorderLayout(3, 5);getContentPane().add(North, top);getContentPane().add(Center, panel1);getContentPane().add(West, calm
12、sPanel);/为各按钮添加事件侦听器for (int i = 0; i COMMAND.length; i+) commandsi.addActionListener(this);implements ActionListener/都使用同一个事件侦听器,即本对象。本类的声明中有 for (int i = 0; i KEYS.Iength; i+) keysi.addActionListener(this);for (int i = 0; i COMMAND.Iength; i+) commandsi.addActionListener(this);for (int i = 0; i =
13、0) /用户按了数字键或者小数点键handleNumber(label);/ handlezero(zero); else /用户按了运算符键handleOperator(label);处理Backspace键被按下的事件*/private void handleBackspace() String text = resultText.getText();int i = text .l ength();if (i 0) /退格,将文本最后一个字符去掉text = text.substring(O, i - 1);if (text.length() = 0) /如果文本没有了内容,则初始化计算器
14、的各种值resultText.setText(O);firstDigit = true;operator =; else /显示新的文本resultText.setText(text);/*处理数字键被按下的事件* param key*/private void handleNumber(String key) if (firstDigit) /输入的第一个数字resultText.setText(key); else if (key.equals(.) & (resultText.getText().indexOf(.) l = jo;ejsdo陽第阴第7宙丄昜谢意吴/ !(LunNl|ns9J)j09n|eA6u!4S)lx9 丄旧 sjxo 丄 iinsai 8S|S K(H)JO9nIBA6uu;s)lx9 丄旧 sjxo 丄 unsai(0 = 0)j!LunNlinssj = qIiunNlinssj (6uo|) = n22iqnop6uo|意吴阴诲单悬圍/ (6e|dP!|eA9iej9do)t()ixo 丄 LuoJTJoqiunNlob = LunNlinssjSW /运行图0BackspaceCtc帆1HisanMR_|4MS丄21 3 1L 一0ii*! 5卜CE :键入数字时,按下相应的数字键,如果按错可用(CE)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西省吕梁市第一中学2025-2026学年高一上学期基础过关(一)物理试题(无答案)
- 2024-2025学年江西省赣州市高二(下)期末物理试卷(含答案)
- 边防军人知识培训课件
- 机器学习算法在健康保险精算模型中的优化-洞察及研究
- 国产高导热材料在监视器箱散热系统中的替代路径
- 含氟硼酸酯类化合物生物代谢路径与食品安全风险评估的关联性研究
- 反射式筒灯与智能建筑光环境协同控制的算法优化路径
- 反光织带与智能穿戴设备的柔性集成技术瓶颈突破
- 双碳目标下刮板系统余热回收与能源梯级利用技术突破
- 半导体级副门锁芯片在电磁脉冲环境下的自毁保护机制
- 软件工程概论第三版课件
- 先进芯片封装知识介绍
- 网贷风险防范与应对策略
- 残损币兑换管理办法
- 2025北京顺义初三一模化学试卷
- 甲状腺癌的护理查房课件
- 毕业设计(论文)-三辊卷板机设计
- 广东春季高考2024年数学试卷
- 肿瘤药物外渗护理
- 具身智能行业深度:技术路线、市场机遇、产业链及相关公司深度梳理
- 江西省防雷减灾白皮书 (2024年)
评论
0/150
提交评论