实验7--GUI编程及事件处理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

南昌大学实验报告学生姓名:王维学号:6100212202专业班级:网工121班实验类型:■验证□综合□设计□创新实验日期:实验成绩:一、实验名称实验7GUI编程及事件处理二、实验目的1、了解和掌握Java语言的关于GUI编程的基础类(JFC),并对AWT包和Swing包中的组件比较。2、掌握Swing包的基本组件如JLable、JTextField、JPasswordField、JTextArea、JButton3、掌握常见的容器组件如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;iexpr.length();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;}@OverridepublicvoidactionPerformed(ActionEvente){if(start==false)field.setText(field.getText().concat(num+));else{field.setText(num+);start=false;}}}/**运算符监听器*/classOperListenerimplementsActionListener{privatecharop;publicOperListener(charop){this.op=op;}@OverridepublicvoidactionPerformed(ActionEvente){if(!enableOper||field.getText().equals())return;calc();if(oper==0)field.setText(field.getText().concat(op+));elsefield.setText(calc().concat(op+));}}/**小数点监听器*/classPointListenerimplementsActionListener{privatecharch;publicPointListener(charch){this.ch=ch;}@OverridepublicvoidactionPerformed(ActionEvente){field.setText(field.getText().concat(ch+));}}/**等于号监听器*/classEqualListenrimplementsActionListener{@OverridepublicvoidactionPerformed(ActionEvente){field.setText(calc());}}}效果:文件菜单源码:packageshiyan7;importjava.awt.Font;importjavax.swing.JFrame;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;importjavax.swing.UIManager;importcom.sun.java.swing.plaf.windows.WindowsLookAndFeel;@SuppressWarnings(serial)publicclassFileMenuextendsJFrame{publicFileMenu(){JMenuBarjmb=newJMenuBar();setJMenuBar(jmb);//文件菜单项JMenufile=newJMenu(文件);JMenuItemnewfile=newJMenuItem(新建);JMenuItemopen=newJMenuItem(打开);JMenuItemclose=newJMenuItem(关闭);JMenuItemexit=newJMenuItem(退出);file.add(newfile);file.add(open);file.add(close);file.add(exit);jmb.add(file);//编辑菜单项JMenuedit=newJMenu(编辑);JMenuItemcopy=newJMenuItem(复制);JMenuItempaste=newJMenuItem(粘贴);JMenuItemfind=newJMenuItem(查找);JMenuItemreplace=newJMenuItem(替换);JMenuItemlocate

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功