javajava图形用户界面与事件处理.ppt

上传人:max****ui 文档编号:6358446 上传时间:2020-02-23 格式:PPT 页数:56 大小:340.50KB
返回 下载 相关 举报
javajava图形用户界面与事件处理.ppt_第1页
第1页 / 共56页
javajava图形用户界面与事件处理.ppt_第2页
第2页 / 共56页
javajava图形用户界面与事件处理.ppt_第3页
第3页 / 共56页
点击查看更多>>
资源描述
21 20 第1页 第五章 java图形用户界面与事件处理 21 20 第2页 知识点 了解GUI相关概念掌握常用AWT组件的属性及用法掌握Java外观布局的管理与控制掌握事件处理方法 21 20 第3页 本章主要介绍以下4个部分的内容 一 JavaAWT AbstractWindowToolkit 组件介绍二 AWT中的常用组件及用法三 Java外观布局的管理与控制四 Java事件与事件处理 21 20 第4页 面向对象的图形用户界面 基于 面向对象 的思想互相交换信息 即尽可能在屏幕上用形象的图标和窗口等来代表有用的资源和可启用的对象 图形界面对象 代表特定的命令 过程 资源 提示信息等图标 Icon 标签 Label 窗口 Window 菜单 Menu 菜单项 MenuItem 按钮 Button 文本框 TextField 列表框 List 图形用户界面 21 20 第5页 一 JavaAWT AbstractWindowToolkit 组件介绍 通过图形用户界面 GraphicalUserInterface GUI 用户和程序之间可以方便友好地进行交互 在Java语言中 Java的基础类 JavaFoundationClassed JFC 是开发GUI的API集 它包括以下几个部分 1 抽象窗口工具包 AWT Java开发用户界面最初的工具包 是建立JFC的主要基础 2 2DAPI 实现高质量的二维图形 3 Swing组件 建立在AWT之上 新的 功能更强大的图形组件包 21 20 第6页 1 抽象窗口工具包 AWT 21 20 第7页 Graphics类还提供了一系列的方法来绘制几何图形 文字 图象以及动画 Lines drawLine Rectangles drawRect fillRect Raisedorloweredrectangles draw3DRect 和fill3DRect Ovals drawOval 和fillOval Arcs drawArc 和fillArc Polygons drawPolygon 和fillPolygon Text drawString Image drawImage Animation 通过一个循环来完成 2 2DAPI 21 20 第8页 javax swing中的组件JLabel显示一行文字 可带图标JTextField用户让用户输入一行文字的构件JButton用于点击执行命令JCheckBox复选框JRadioButton单选按钮JCombox下拉列表框供选取JList一组列表项供选择 3 Swing组件 21 20 第9页 二 AWT中的常用组件及用法 1 容器 Container 一个Java的图形用户界面的最基本组成部分就是组件 Component 组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象 比如Button Checkbox Choice Label List等 组件不能独立地显示出来 必须将组件放在特定的对象中才能显示出来 这就是包含组件的组件 Container 容器 容器Container是Component的子类 它本身也是一个组件 具有组件所有的性质 另外 它还具有容纳其他组件和容器的功能 21 20 第10页 Container类的功能 Container类是由Component类派生出来的一种特殊类 用来表示各种GUI组件的容器 其主要功能包括 组件的管理 方法add 可以向其中添加一个组件 remove 删除其中的一个组件 布局管理 每个Container类都和一个布局管理器相联 以确定其中组件的布局 Container类可以通过setLayout 方法设置某种布局方式 常见的Container类有 Frame Panel Applet等 二 AWT中的常用组件及用法 1 容器 Container 21 20 第11页 二 AWT中的常用组件及用法 1 容器 Container 21 20 第12页 二 AWT中的常用组件及用法 1 容器 Container 21 20 第13页 AWT使用Container类来定义最基本的组件容器 它有两个常用的子类 Window类和Panel类 Window类还有两个子类 定义对话框 用Dialog子类 定义一般意义的窗口 用Frame类 Frame可以用其构造方法Fame String 来生成 其标题由String参数指定 一个Frame刚被创建后 其初始大小为 0 0 而且是不可见的 所以为了使Frame显示出来 必须在程序中显式地设置一下它的大小 二 AWT中的常用组件及用法 1 容器 Container 21 20 第14页 Panel可以使程序员更方便地组织自己的组件 得到赏心悦目的布局 Panel可以使用构造方法Panel 生成 当一个Panel对象被创建后 必须放在Window和Frame中才能可见 使用add 方法就可以将Panel添加到其他容器中 Applet是Panel的子类 因此在小应用程序里可以直接加入构件 而一般的应用程序必须先定义构件容器 小应用程序在浏览器中所显示的区域就是Panel 所占的尺寸就是缺省的Panel尺寸 浏览器本身也可以看作是一个容器 二 AWT中的常用组件及用法 1 容器 Container 21 20 第15页 importjava awt publicclassMyFrameextendsFrame publicMyFrame Stringstr super str setSize 500 500 setBackground Color blue publicvoidshowDialog FileDialogfd newFileDialog this FileDialog fd setVisible true publicstaticvoidmain Stringargs MyFramefr newMyFrame Frame DialogTest fr setVisible true fr showDialog MyFrame java 21 20 第16页 AppletWindow java importjava awt importjava applet publicclassAppletWindowextendsApplet publicvoidinit Buttonb1 newButton 确定 add b1 Buttonb2 newButton 取消 add b2 21 20 第17页 二 AWT中的常用组件及用法 标签 Label 静态文字 多用于指示信息 无事件 单行文本框 TextField 只能显示一行信息 会产生多种事件 按钮 Button 可点击的用户界面组件 当组件被点击是 产生AcitonEvent事件 21 20 第18页 二 AWT中的常用组件及用法 复选框 Checkbox 提供简单的 on off 开关 同时旁边还可以显示说明信息 当复选框状态发生变化时 会产生ItemEvent事件 复选框组 CheckboxGroup 单选框 RadioButton 当多个复选框组成一组时 就形成了单选框 复选框组中的复选框之间是相互关联的 每次有且只有一个处于选中状态 21 20 第19页 列表 List 列表提供了很多文本选项 可以同时看到多项 也有滚动条的支持 并且可以单选或多选 当用户单选或多选时 会产生ItemEvent事件 下拉式菜单 Choice 在下拉式菜单中有多个选项 但每次只能选择一项 当选择发生时 会产生ItemEvent事件 文本输入区 TextArea 可以显示多行信息 并且有滚动条支持 按回车键后并不产生事件 如果要判断是否完成输入 需要用其他方法 如用一个结束按钮 二 AWT中的常用组件及用法 21 20 第20页 Checkboxadd newCheckbox one null true add newCheckbox two null false add newCheckbox three null false CheckboxGroupCheckboxGroupcbg newCheckboxGroup add newCheckbox one cbg true add newCheckbox two cbg false add newCheckbox three cbg false ChoiceChoicech newChoice ch add Green ch add Red ch add Blue add ch 二 AWT中的常用组件及用法 21 20 第21页 ListListlst newList 4 false lst add Mercury lst add Venus lst add Earth lst add JavaSoft lst add Mars lst add Neptune add lst TextAreaadd newTextArea Hello 5 40 TextFieldTextFieldtf1 tf2 tf3 tf4 tf1 newTextField ablanktextfieldtf2 newTextField 20 blankfieldof20columnstf3 newTextField Hello predefinedtextdisplayedtf4 newTextField Hello 30 predefinedtextin30columns 21 20 第22页 菜单菜单与其他组件不同 无法直接添加到容器的某一位置 也无法用布局管理器对其加以控制 它由以下概念支撑 菜单条 MenuBar 只能添加到Frame中 用setMenuBar 作为摆放菜单的容器 菜单 Menu 菜单项容器 负责显示并控制其中的菜单项 它支持菜单嵌套 菜单项 MenuItem 真正的动作 可以用ActionListener监听其事件 ActionEvent 复选框菜单项 CheckboxMenuItem 真正的动作 可以用ItemListener监听其事件 ItemEvent 弹出式菜单 PopupMenu 与菜单 Menu 相似 也是菜单项容器 通过其show 方法来显示菜单项 二 AWT中的常用组件及用法 21 20 第23页 MenuBarmb Menum MenuItemmi1 mi2 CheckboxMenuItemmi3 Buildthemenubar mb newMenuBar setMenuBar mb Buildfirstmenuinthemenubar m newMenu Menu1 mb add m mi1 newMenuItem File m add mi1 mi2 newMenuItem Edit m add mi2 mi3 newCheckboxMenuItem Exit m add mi3 二 AWT中的常用组件及用法 21 20 第24页 三 Java外观布局的管理与控制 21 20 第25页 在程序中安排组件的位置和大小时 应注意 容器中布局管理器负责各组件的大小和位置 用户无法在这种情况下设置组件的这些属性 如试图调用setLocation setSize setBounds 等 如果用户确实需要自己设置组件的大小和位置 则应取消该容器的布局管理器 方法为 setLayout null 但用户必须使用setLocation setSize setBounds 等方法为组件设置大小和位置 不过程序将系统相关 三 Java外观布局的管理与控制 21 20 第26页 在容器中所有组件的布局都由布局管理器来控制 每个容器 如Panel Windows或Frame都有各自缺省的布局管理器 程序员也可以在程序中指定一个新的布局管理器 java awt类包中包含五种布局管理器 FlowLayout Panel和Applet的缺省布局管理器BorderLayout Window Dialog和Frame的缺省布局管理器GridLayoutCardLayoutGridBagLayout 三 Java外观布局的管理与控制 21 20 第27页 三 Java外观布局的管理与控制 1 FlowLayout FlowLayout布局方式是将组件一排一排地依次放置 它自动调用组件的getPreferredSize 方法 使用组件的最佳尺寸来显示组件 当容器被重新设置大小后 则布局也会随之发生改变 各组件的大小不变 但相对位置会发生变化 FlowLayout类有三种构造方法 publicFlowLayout 使用缺省居中对齐方式 组件间的水平和竖直间距为缺省值5个象素 publicFlowLayout intalignment 使用指定的对齐方式 FlowLayout LEFT FlowLayout Center FlowLayout RIGHT 0 1 2 水平和竖直间距为缺省值5象素 publicFlowLayout intalignment inthGap intvGap 使用指定的对齐方式 水平和竖直间距也为指定值 21 20 第28页 GridLayout布局方式可以使容器中的各组件呈网格状分布 容器中各组件的高度和宽度相同 当容器的尺寸发生变化时 各组件的相对位置不变 但各自的尺寸会发生变化 各组件的排列方式为 从上到下 从左到右 与BorderLayout类相类似 如果想在一个网格单元中添加多个组件 则必须先在该网格单元放一个容器 再将多个组件放在该容器中 三 Java外观布局的管理与控制 2 GridLayout 21 20 第29页 GridLayout类有三种构造方法 publicGridLayout 在一行中放置所有的组件 各组件间的水平间距为0象素 publicGridLayout introws intcols 生成一个rows行 cols列的管理器 最多能放置rows cols个组件 publicGridLayout introws intcols inthGap intvGap 各组件间的水平和竖直间距为指定值 三 Java外观布局的管理与控制 2 GridLayout 21 20 第30页 BorderLayout布局方式提供了更复杂的布局控制方法 它包括5个区域 North South East West和Center 其方位依据上北下南左西右东 当容器的尺寸发生变化时 各组件的相对位置不变 但中间部分组件的尺寸会发生变化 南北组件的高度不变 东西组件的宽度不变 BorderLayout类有二种构造方法 publicBorderLayout 各组件间的水平和竖直间距为缺省值0个象素 publicBorderLayout inthGap intvGap 各组件间的水平和竖直间距为指定值 三 Java外观布局的管理与控制 3 BorderLayout 21 20 第31页 如果容器使用了BorderLayout布局方式 则用add 方法往容器中添加组件时必须指明添加的位置 否则组件将无法正确显示 不同的布局管理器 向容器中添加组件的方法也不同 add West newButton West add North newButton North add newButton South BorderLayout SOUTH 若没有指明放置位置 则表明为默认的 Center 方位 三 Java外观布局的管理与控制 3 BorderLayout 21 20 第32页 每个区域只能添加一个组件 若添加多个 则只能显示一个 如果想在一个区域添加多个组件 则必须先在该区域放一个容器 再将多个组件放在该容器中 若每个区域或若干个区域没有放置组件 东西南北区域将不会有预留 而中间区域将置空 三 Java外观布局的管理与控制 3 BorderLayout 21 20 第33页 四 Java事件与事件处理 所谓事件 就是发生在用户界面上的用户交互行为而产生的一种效果 如鼠标的各种动作 键盘的操作以及发生在组件上的各种动作 因此事件一般也分为三种类型 键盘事件 鼠标事件以及组件的动作事件 对鼠标或键盘事件在一定程度上进行了封装 每发生一个事件 程序都需要作出相应的响应 这称为事件处理 在JDK1 0和1 1中 事件表示以及事件的处理是采用不同的方式来完成的 21 20 第34页 在JDK1 1中 事件处理模型将事件源 产生事件的组件 和对事件作出的具体处理 利用一种称为监听器 listener 的实体来对事件进行具体的处理 分开 一般情况下 组件 事件源 都不处理自己的事件 而是将事件处理委托给外部的处理实体 监听器 这种事件处理模型称为事件的授权处理模型 不同的事件 可以交由不同类型的监听器去处理 所有的组件都从Component类中继承了将事件处理授权给监听器的方法 addXXXListener ListenerTypelistener 所有的监听器接口都放在java awt event包中 四 Java事件与事件处理 21 20 第35页 首先 对于某种类型的事件XXXEvent 要想接收并处理该类事件 必须定义相应的事件监听器类 这个类需要实现针对该类事件的特定接口XXXListener 其次 要实现该类中对事件处理的所有方法 第三 对于事件源 必须使用addXXXListener XXXListener对象 注册该类事件的监听器 以便当事件产生时 能够被监听器接收和处理 Test Exit ActionEvent Frame 事件源 监听器 MyListenerClass 四 Java事件与事件处理 actionPerformed ActionEvente 21 20 第36页 publicclassMyFrameextendsFrame publicMyFrame Stringstr super str setLayout newFlowLayout setSize 300 200 Buttonb1 newButton Test Buttonb2 newButton Exit MyListenerClassbln newMyListenerClass b1 addActionListener bln b2 addActionListener bln add b1 add b2 publicstaticvoidmain Stringargs MyFramefr newMyFrame EventTest fr show classMyListenerClassimplementsActionListener publicvoidactionPerformed ActionEvente if e getActionCommand Test System out println ButtonTestpressed else System exit 0 四 Java事件与事件处理 21 20 第37页 JDK1 1事件处理模型中的监听器都是通过实现在包java awt event中提供的监听器接口来获得的 每种事件都对应有相应的监听器接口 事件的处理方法都已经在该接口中定义了 interfaceKeyListenerextendsjava util EventListener publicvoidkeyPressed KeyEvente publicvoidkeyReleased KeyEvente publicvoidkeyTyped KeyEvente interfaceActionListenerextendsjava util EventListener publicvoidactionPerformed ActionEvente 监听器接口示例 四 Java事件与事件处理 21 20 第38页 各AWT组件所产生的事件和事件所用的监听器 四 Java事件与事件处理 21 20 第39页 21 20 第40页 监听器注册方法 MouseMotionListener mouseDragged MouseEvente mouseMoved MouseEvente WindowListener windowActivated WindowEvente windowClosed WindowEvente windowClosing WindowEvente windowDeactivated WindowEvente windowDeiconified WindowEvente windowIconified WindowEvente windowOpened WindowEvente 21 20 第41页 MultiListener java 在一个监听器类中可以实现多个监听器接口 通过它可以同时监听同一个事件源上发生的多种事件 同时 通过事件可以获得事件的详细信息 四 Java事件与事件处理 21 20 第42页 由于通过实现接口XXXListener来完成事件处理时 要同时实现该接口中的所有方法 通常我们只是需要对其中的某些方法做处理 而不想实现所有的无关方法 因此 为了方便起见 JDK1 1为某些监听器接口提供了适配器类 XXXAdapter 当需要对某种事件进行处理时 只需让事件处理类继承事件所对应的适配器类 只重写需要关注的方法即可 而无关的方法就不必实现了 适配器是一个类而不是接口 因而处理事件的类只能继承一个适配器 当该类需要处理多种事件时 通过继承适配器类的方式是不行的 但可以基于适配器类 用内嵌类 InnerClass 的方法来处理这种情况 MultiListener1 java 四 Java事件与事件处理 21 20 第43页 Applet本身是一个AWT组件 因此可以对其中所发生的事件进行处理 其处理与前面所讲的图形用户界面程序的设计是一样的 四 Java事件与事件处理 21 20 第44页 五 Java小应用程序的分析 1 Applet简介Java小应用程序 JavaApplet 是使用Java语言编写的一段代码 它能够在浏览器环境中运行 Applet与Application地主要区别在于它们的执行方式不同 Application是使用命令行命令直接运行 从其main 方法开始运行的 而Applet则是在浏览器中运行的 首先必须创建一个HTML文件 通过编写HTML语言代码告诉浏览器载入何种Applet以及如何运行 再在浏览器中给出该HTML文件的URL地址即可 Applet本身的执行过程也较Application复杂 21 20 第45页 回忆一下小应用程序的书写格式importjava applet publicclassMyAppletextendsApplet 每一个小应用程序都继承自java applet Applet类 并且每个小应用都有一个主程序类 之前必须加上public 五 Java小应用程序的分析 21 20 第46页 2 Applet的执行过程 21 20 第47页 3 Applet的安全性 沙箱 机制 Java虚拟机为Applet提供能够良好运行的沙箱 一旦它们试图离开沙箱则会被禁止 由于小应用程序是通过网络传递的 这就不可避免地使人想到会发生安全问题 例如有人编写恶意程序通过小应用程序读取用户密码并散播到网络上 这将会是一件非常可怕的事情 所以 必须对小应用程序进行限制 浏览器禁止Applet执行下列操作 1 在运行时调用其它程序 2 文件读写操作 3 装载动态连接库和调用任何本地方法 4 试图打开一个socket进行网络通信 但是所连接的主机并不是提供Applet的主机 五 Java小应用程序的分析 21 20 第48页 小应用程序的限制 五 Java小应用程序的分析 21 20 第49页 看看我们以前学过的一个简单例子 importjava applet importjava awt publicclassHelloAppletextendsApplet publicStrings publicvoidinit s newString HelloWorld publicvoidpaint Graphicsg g drawString s 25 25 HelloApplet java 五 Java小应用程序的分析 4 Applet的运行控制 21 20 第50页 Applet的运行控制 五 Java小应用程序的分析 21 20 第51页 Applet的生命周期 五 Java小应用程序的分析 21 20 第52页 Applet中没有main 方法 当Applet被浏览器运行时 init start stop destroy 方法等自动执行 init 方法 初始化 自动调用 只执行一次 本方法主要完成一些在Applet构造方法所不能完成的工作 start 方法 初始化后 重入等都将自动调用 本方法是Applet的主体 在其中可以执行一些任务或启动相关的线程来执行任务 stop 方法 离开Applet所在页面时调用 以停止消耗系统资源 destroy 方法 浏览器关闭时自动调用 以清除Applet所用的所有资源 五 Java小应用程序的分析 21 20 第53页 五 Java小应用程序的分析 21 20 第54页 Applet是从java awt Panel继承而来 因此它本身也是一个容器 可以往其中添加其他的AWT组件 从而构造更复杂 更有用的Applet程序 往Applet中添加其他AWT组件及其事件处理与前面所讲的图形用户界面程序的设计是一样的 五 Java小应用程序的分析 21 20 第55页 实验 组件的应用实例 制作如下一个留言板的界面 按要求加入所需控件 并进行窗口控件的布局 之后 按要求为按钮 文本框 窗口添加事件 使之实现提交显示留言 清屏 留言至顶和至尾等功能 21 20 第56页 640 480 大笑痛苦 微笑
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!