实验7GUI编程及事件处理.docx
- 文档编号:3234305
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:22
- 大小:300.17KB
实验7GUI编程及事件处理.docx
《实验7GUI编程及事件处理.docx》由会员分享,可在线阅读,更多相关《实验7GUI编程及事件处理.docx(22页珍藏版)》请在冰豆网上搜索。
实验7GUI编程及事件处理
南昌大学实验报告
学生姓名:
王维学号:
6100212202专业班级:
网工121班
实验类型:
■验证□综合□设计□创新实验日期:
实验成绩:
一、实验名称
实验7GUI编程及事件处理
二、实验目的
1、了解和掌握Java语言的关于GUI编程的基础类(JFC),并对AWT包和Swing包中的组件比较。
2、掌握Swing包的基本组件如JLable、JTextField、JPasswordField、JTextArea、JButton
3、掌握常见的容器组件如JPanel、JFrame等。
4、掌握Swing的5种布局管理器来管理布局方式。
5、理解和掌握java的事件处理机制
三、实验内容
1.编写一个java程序Counter.java,实现一个计算器的图形界面,实现”+,-,*,/”这些基本运算。
2.编写一个java程序FileMenu.java,设计一个简易文件管理菜单。
菜单有“文件”、“编辑”、“格式”、“窗口”、“帮助”。
其中,文件菜单项有子菜单项:
新建、打开、关闭、退出;编辑菜单项有子菜单项:
复制、粘贴、查找、替换、定位;“格式”菜单可以设置前景色、背景色、字体的风格、指定字体格式等内容;帮助菜单项有子菜单项:
用户帮助、版本说明。
采用Windows操作系统的外观。
3.编写程序,实现通过鼠标滚轮实现对一个圆形的大小控制及通过键盘实现圆形的移动。
4.编写程序,实现用户注册的功能。
具体包括用户的用户名、密码、确认密码、性别、出生年月。
另外设计两个按钮“确认”和“取消”。
当用户按下“确认”按钮时,可以将注册信息在屏幕上显示出来。
如果按下“取消”,则退出用户注册。
要求使用布局管理器(布局管理器主要包括:
FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout。
)
四、实验要求
1、了解java系统图形用户界面的基本工作原理和界面的设计步骤;
2、了解图形用户界面的事件响应机制;
3、掌握图形用户界面各种常用的基本组建的使用方法及其事件响应;
4、掌握图形用户界面各种布局策略的设计与使用。
五、实验环境
1、PC微机;
2、DOS操作系统或Windows操作系统;
3、Sdk程序集成环境或Jbuilder程序集成环境。
六、实验步骤
1、输入源程序;
2、利用相关工具(Eclipse运行本程序);
七、源码及结果
计算器的数据流程图:
因为GUI编程的流程不止一个。
这里只给出了计算过程的流程图:
计算器源码:
packageshiyan7;
importjava.awt.BorderLayout;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.UIManager;
importjavax.swing.UnsupportedLookAndFeelException;
importcom.sun.java.swing.plaf.windows.WindowsLookAndFeel;
/**
*单步计算的计算器王维
*/
@SuppressWarnings("serial")
publicclassCounterextendsJFrame{
privatedoublenum1;
privatedoublenum2;
privatecharoper;
privatebooleanenableOper=true;
privatebooleanstart=true;
//GUI对象
privateJButtonjb[]=newJButton[10];
privateJTextFieldfield;
publicCounter(){
field=newJTextField();
add(field,BorderLayout.NORTH);
JPanelpa=newJPanel(newGridLayout(4,4,8,8));
JButtonjbdiv=newJButton("/");
JButtonjbmul=newJButton("*");
JButtonjbsub=newJButton("-");
JButtonjbadd=newJButton("+");
JButtonjbeq=newJButton("=");
JButtonjbdigt=newJButton(".");
//创建数字按钮对象,并添加监听器
for(inti=0;i<=9;i++){
jb[i]=newJButton(i+"");
jb[i].addActionListener(newDigitListener(i));
}
//运算符按钮添加监听器
jbmul.addActionListener(newOperListener('*'));
jbdiv.addActionListener(newOperListener('/'));
jbadd.addActionListener(newOperListener('+'));
jbsub.addActionListener(newOperListener('-'));
//小数点按钮添加监听器
jbdigt.addActionListener(newPointListener('.'));
jbeq.addActionListener(newEqualListenr());
//开始布局
pa.add(jb[7]);
pa.add(jb[8]);
pa.add(jb[9]);
pa.add(jbadd);
pa.add(jb[4]);
pa.add(jb[5]);
pa.add(jb[6]);
pa.add(jbsub);
pa.add(jb[1]);
pa.add(jb[2]);
pa.add(jb[3]);
pa.add(jbmul);
pa.add(jb[0]);
pa.add(jbdigt);
pa.add(jbeq);
pa.add(jbdiv);
add(pa,BorderLayout.CENTER);
}
/*
*计算
*/
publicStringcalc(){
Stringexpr=field.getText();
oper=0;
for(inti=0;i charc=expr.charAt(i); if(isOper(c)){ oper=c; num1=Double.parseDouble(expr.substring(0,i)); num2=Double.parseDouble(expr.substring(i+1)); } } switch(oper){ case'+': num1=num1+num2; break; case'-': num1=num1-num2; break; case'*': num1=num1*num2; break; case'/': num1=num1/num2; break; } System.out.println(num1); returnnum1+""; } privatebooleanisOper(charop){ if(op=='+'||op=='-'||op=='*'||op=='/') returntrue; returnfalse; } publicstaticvoidmain(String[]args){ try{ UIManager.setLookAndFeel(newWindowsLookAndFeel()); }catch(UnsupportedLookAndFeelExceptione){ e.printStackTrace(); } Counterc=newCounter(); c.setSize(250,250); c.setDefaultCloseOperation(EXIT_ON_CLOSE); c.setLocationRelativeTo(null); c.setVisible(true); } /* *数字监听器 */ classDigitListenerimplementsActionListener{ privateintnum; publicDigitListener(intnum){ this.num=num; } @Override publicvoidactionPerformed(ActionEvente){ if(start==false) field.setText(field.getText().concat(num+"")); else{ field.setText(num+""); start=false; } } } /* *运算符监听器 */ classOperListenerimplementsActionListener{ privatecharop; publicOperListener(charop){ this.op=op; } @Override publicvoidactionPerformed(ActionEvente){ if(! enableOper||field.getText().equals("")) return; calc(); if(oper==0) field.setText(field.getText().concat(op+"")); else field.setText(calc().concat(op+"")); } } /* *小数点监听器 */ classPointListenerimplementsActionListener{ privatecharch; publicPointList
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验7 GUI编程及事件处理 实验 GUI 编程 事件 处理