实验7GUI编程及事件处理Word文档下载推荐.docx
《实验7GUI编程及事件处理Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验7GUI编程及事件处理Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
菜单有“文件”、“编辑”、“格式”、“窗口”、“帮助”。
其中,文件菜单项有子菜单项:
新建、打开、关闭、退出;
编辑菜单项有子菜单项:
复制、粘贴、查找、替换、定位;
“格式”菜单可以设置前景色、背景色、字体的风格、指定字体格式等内容;
帮助菜单项有子菜单项:
用户帮助、版本说明。
采用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;
expr.length();
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;
num1=num1-num2;
num1=num1*num2;
num1=num1/num2;
System.out.println(num1);
returnnum1+"
;
privatebooleanisOper(charop){
if(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;
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