书签 分享 收藏 举报 版权申诉 / 85
上传文档赚钱

类型网络程序设计java第08章Swing图形用户界面程序设计new教学课件.ppt(85页)

  • 上传人(卖家):ziliao2023
  • 文档编号:7905417
  • 上传时间:2024-09-03
  • 格式:PPT
  • 页数:85
  • 大小:409.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《网络程序设计java第08章Swing图形用户界面程序设计new教学课件.ppt(85页)》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    网络程序设计 java 08 Swing 图形 用户界面 程序设计 new 教学 课件
    资源描述:

    1、2023-9-231网络程序设计网络程序设计Network Programming第八章第八章 Swing 图形用户界面图形用户界面赵建立赵建立山东科技大学信息科学与工程学院山东科技大学信息科学与工程学院College of Information Science and Engineering,Shandong University of Science and Technologyzhaojianligmail2023-9-232简介简介 图形用户界面图形用户界面(GUI)数据的图形显示形式数据的图形显示形式 友好的交互方式友好的交互方式 简化计算机软件的学习过程简化计算机软件的学习过程

    2、GUI示例示例 微软微软 IPOD IPHONE IPAD2023-9-233简介简介 乔布斯乔布斯 76年大学辍学成立苹果公司,80年12月上市苹果公司高层产生了4名亿万富翁和40名以上的百万富翁;Lisa项目失败,1985年4经由董事会决议撤销经营大权;2019年12月,回归苹果,在乔布斯的改革之下,“苹果”终于实现盈利。乔布斯刚上任时,苹果公司的亏损高达10亿美元,一年后却奇迹般地盈利3.09亿美元;2019年8月初,苹果公司市值(约3371亿美元)超过埃克森美孚(约3333亿美元),成为全球第一大市值的上市公司,也是全球第一大资讯科技公司。2023-9-234Swing整体介绍整体介绍

    3、 早期版本的早期版本的GUI组件组件 所在的包所在的包:java.awt 与平台相关性较强与平台相关性较强,功能较弱功能较弱 Swing GUI 组件组件 所在的包所在的包:javax.swing Swing组件的平台相关性较小组件的平台相关性较小(lightweight)Swing比比AWT可以克服不同操作系统带来的图形界面的差别可以克服不同操作系统带来的图形界面的差别Swing图形用户界面可以定制指定的操作系统风格的界面图形用户界面可以定制指定的操作系统风格的界面两类图形用户界面之间在组件控制机制等方面存在一些冲突,两类图形用户界面之间在组件控制机制等方面存在一些冲突,一般建议使用一般建议

    4、使用swing。2023-9-235JComponent 组件类的层次结构组件类的层次结构java.lang.Object|+-java.awt.Component|+-java.awt.Container|+-javax.swing.JComponent JComponent大多数大多数Swing组件类父类组件类父类2023-9-236Swing 组件组件 组件和容器是组件和容器是Swing图形用户界面的组成部分:图形用户界面的组成部分:容器容器 各种组件必须放在容器各种组件必须放在容器 容器本身也是一种组件容器本身也是一种组件 分类分类 顶层容器(小应用程序、对话框和框架)顶层容器(小应用

    5、程序、对话框和框架)一般容器(面板、滚动窗格、分裂窗格、选项卡窗格、工具条)一般容器(面板、滚动窗格、分裂窗格、选项卡窗格、工具条)其它容器其它容器 组件组件 基本控制组件(按钮、单选按钮、复选框、组合框、列表框)基本控制组件(按钮、单选按钮、复选框、组合框、列表框)不可编辑的信息显示组件(标签、进度条)不可编辑的信息显示组件(标签、进度条)可编辑的信息显示组件(文本编辑区、文本区域)可编辑的信息显示组件(文本编辑区、文本区域)2023-9-237一些一些GUI组件组件 标签标签(JLabel)文本框文本框(JTextField)按钮按钮(JButton)复选框复选框(JCheckBox)组合

    6、框组合框(JComboBox)文本文本(JTextArea)框架框架(JFrame)面板面板(JPanel)2023-9-238标签标签(JLabel)标签标签 为为GUI提供文本提供文本(主要主要)或图像或图像(也可以也可以)信息信息 对应类对应类(JLabel)(JComponent的子类的子类)可以显示可以显示:单行的只读的文本信息单行的只读的文本信息 图像图像 同时显示文本与图像信息同时显示文本与图像信息 程序一般不修改标签的内容程序一般不修改标签的内容2023-9-239示例示例【例例8-1】J_LableFrame.java,在框架中添加标签的例程在框架中添加标签的例程2023-9

    7、-2310文本框文本框(JTextField)文本框文本框(JTextField)显示单行的文本信息显示单行的文本信息 JTextField extends JTextComponent2023-9-2311示例示例【例例8-2】J_Text.java,文本编辑框例程文本编辑框例程2023-9-2312按钮按钮(JButton)当鼠标左键单击按钮组件时,能触发特定当鼠标左键单击按钮组件时,能触发特定的事件的事件 在在Java中中,广义的按钮包括广义的按钮包括:命令式按钮命令式按钮(JButton)复选框复选框(JCheckBox)单选按钮单选按钮(JRadioButton)2023-9-231

    8、3按钮类的层次结构按钮类的层次结构javax.swing.JComponentjavax.swing.AbstractButtonjavax.swing.JButtonjavax.swing.JToggleButtonjavax.swing.JCheckBoxjavax.swing.JRadioButton2023-9-2314示例示例【例例8-3】J_Button.java,命令式按钮、复选框和单选按钮例程命令式按钮、复选框和单选按钮例程2023-9-2315组合框组合框(JComboBox)组合框组合框(JComboBox)可以从下拉式的列表框中选取其中的列表项可以从下拉式的列表框中选取其

    9、中的列表项 有时也称为下拉框有时也称为下拉框(drop-down list)类类JComboBox中的方法中的方法 getSelectedIndex()返回当前被选中的项返回当前被选中的项 setMaximumRowCount(n)设置最多显示列表项的项数设置最多显示列表项的项数 滚动条滚动条(Scrollbar)会自动加上会自动加上2023-9-2316示例示例【例例8-4】J_Lines.java,组合框、列表框、文本区域和滚动窗格例程组合框、列表框、文本区域和滚动窗格例程2023-9-2317框架框架(JFrame)Swing组件从功能分可以分成三种,分别是顶层组件,中间组件和基本组件。

    10、JFrame就是顶层组件,简单的描述也就是可以独立显示的组件。而中间组件是可以充当载体,但是不能独立显示的组件,可以把基础组件放在其中,但是还是要依托在顶层容器内才可以显示。基础组件则是实现人机交互的基本组件。类类 JFrame 是是java.awt.Frame的子类的子类java.lang.Object|+-java.awt.Component|+-java.awt.Container|+-java.awt.Window|+-java.awt.Frame|+-javax.swing.JFrame2023-9-2318面板面板(JPanel)一种中间容器,在面板中添加组件,然后一种中间容器,在

    11、面板中添加组件,然后再将面板添加到其他容器中。再将面板添加到其他容器中。可以添加各种组件可以添加各种组件(包括面板组件包括面板组件)面板面板(JPanel)的大小由它所包含的组件决定的大小由它所包含的组件决定 当组件个数增加,面板当组件个数增加,面板(JPanel)也会随之而增大也会随之而增大2023-9-2319示例示例【例例8-5】J_Panel.java,面板例程面板例程2023-9-2320本章总体纲要本章总体纲要 基本基本GUI组件组件 布局管理器布局管理器 事件处理模型事件处理模型 菜单菜单2023-9-2321布局管理器布局管理器用来控制组件在容器中的布局方式用来控制组件在容器中

    12、的布局方式应当尽量利用已有的基本布局方式应当尽量利用已有的基本布局方式布局管理器处理组件布局的大部分细节布局管理器处理组件布局的大部分细节 给顶层容器设置布局管理器:先通过顶层容器给顶层容器设置布局管理器:先通过顶层容器getContentPane获获取顶层容器的内容窗格,再通过取顶层容器的内容窗格,再通过java.awt.Container的的setLayout设置内容窗格的布局管理器;设置内容窗格的布局管理器;给其他容器设置布局管理器:直接通过给其他容器设置布局管理器:直接通过java.awt.Container的的setLayout设置内容窗格的布局管理器。设置内容窗格的布局管理器。20

    13、23-9-2322布局管理器布局管理器 FlowLayout GridLayout BorderLayout CardLayout 组合布局管理器组合布局管理器2023-9-2323FlowLayout 是一种最基本的布局管理器是一种最基本的布局管理器 是是 java.awt.Applet、java.awt.Panel 和和 javax.swing.JPanel的默认布局方式的默认布局方式 在容器中,从左到右依次放置在容器中,从左到右依次放置GUI组件组件 当组件排到容器一行的末尾时,则从下一当组件排到容器一行的末尾时,则从下一行开始接着排列组件行开始接着排列组件 每行组件的对齐方式可以是每行

    14、组件的对齐方式可以是:左对齐、中间左对齐、中间(默认对齐方式默认对齐方式)和右对齐和右对齐2023-9-2324类类FlowLayout 对齐方法对齐方法 setAlignment(position_CONSTANT)FlowLayout.LEFT FlowLayout.CENTER FlowLayout.RIGHT2023-9-2325GridLayout 将容器按行和列等分成棋盘状,然后组件将容器按行和列等分成棋盘状,然后组件从第一行按照从左到右依次被放到这些矩从第一行按照从左到右依次被放到这些矩形区域中,一行放满了,继续从下一行开形区域中,一行放满了,继续从下一行开开始。开始。Publi

    15、c GridLayout(int rows,int cols)2023-9-2326示例示例【例例8-6】J_GridLayout.java,网格布局管理器例程网格布局管理器例程2023-9-2327BorderLayout 是容器是容器JFrame和和JApplet的默认布局方式的默认布局方式 将容器分成五个区域,将容器分成五个区域,NORTH(顶部顶部)SOUTH(底部底部)WEST(左侧左侧)EAST(右侧右侧)CENTER(中间中间)每个区域最多只能每个区域最多只能1个组件个组件2023-9-2328类类BorderLayout方法方法 构造方法构造方法:BorderLayout(hG

    16、ap,vGap);hGap 区域间的水平间隙区域间的水平间隙 vGap-区域间的竖直间隙区域间的竖直间隙 上面两个数据的默认值是上面两个数据的默认值是0 添加组件添加组件 myContainer.add(component,position)component 需要加入到容器中的组件需要加入到容器中的组件 positions (BorderLayout.NORTH)NORTH,SOUTH,EAST,WEST,CENTER2023-9-2329示例示例【例例8-7】J_Border.java,边界布局管理器例程边界布局管理器例程2023-9-2330CardLayout CardLayout的布

    17、局方式有点象的布局方式有点象“扑克牌扑克牌”一个组件压在另一个组件的上面,所以每一个组件压在另一个组件的上面,所以每次一般只能看到一个组件次一般只能看到一个组件2023-9-2331示例示例【例例8-8】J_CardLayout.java,卡片布局管理器例程卡片布局管理器例程2023-9-2332BoxLayout BoxLayout允许多个组件在容器中沿水平方允许多个组件在容器中沿水平方向或竖直方向排列,不换行、换列。向或竖直方向排列,不换行、换列。2023-9-2333示例示例【例例8-9】J_CardLayout.java,卡片布局管理器例程卡片布局管理器例程2023-9-2334布局管

    18、理器嵌套布局管理器嵌套 实际上是容器的嵌套,被嵌套的容器可以实际上是容器的嵌套,被嵌套的容器可以具有不同的布局管理器具有不同的布局管理器 在嵌套的布局管理器中在嵌套的布局管理器中 JPanel 通常起到了通常起到了“桥桥”的作用的作用2023-9-2335示例示例【例例8-10】J_FlowBoxLayout.java,组合布局方式例程组合布局方式例程 Swing中的类在设计时采用了模型、视图、控制器(Model View Controller,MVC)模式作为每个组件的基本设计。MVC模式是GUI程序设计中比较常见的一种设计方法,因此理解MVC模式不仅有利于学习Swing,更有助于设计GUI

    19、程序。MVC模式将GUI组件拆分为模型、视图、控制器三个基本要素,每一个要素都对组件的表现起着至关重要的作用。MVC模型(Model)包含每个组件的数据状态,不同类型的组件有不同的模型。什么是组件的数据状态呢?例如滚动条组件(JScrollBar)的数据状态就包含滚动条的当前位置、最大值、最小值以及滚动条的宽度等。这些数据信息就是滚动条组件的模型。视图(View)是组件在屏幕上的表现形式。由于Java是跨平台的语言,同一个组件在不同的平台上的显示是不相同的,在不同的外观风格下也是不相同的。为了让Java的GUI程序也应该做到“Write once,run anywhere”,Swing组件依据

    20、组件的模型和当前所处的显示环境进行组件绘制。控制器(Controller)控制组件如何与事件进行交互。事件的形式有多种,例如鼠标单击、获得或者失去焦点、键盘点击等。当这些事件发生时,控制器根据事件的类型,决定组件如何响应 图 MVC模式2023-9-2339本章总体纲要本章总体纲要 基本基本GUI组件组件 布局管理器布局管理器 事件处理模型事件处理模型 菜单菜单2023-9-2340事件处理模型事件处理模型 事件:对鼠标、键盘和其他输入设备的各事件:对鼠标、键盘和其他输入设备的各种操作,一般称为事件。种操作,一般称为事件。GUI是由事件是由事件(event)驱动的驱动的 当用户与当用户与GUI

    21、交互可以产生事件交互可以产生事件(events)一些常见的交互方式一些常见的交互方式 移动鼠标移动鼠标 用鼠标点击按钮用鼠标点击按钮 在文本框中输入数据在文本框中输入数据 关闭窗口等关闭窗口等2023-9-2341事件处理机制事件处理机制 事件处理模型是以对象形式封装的,主事件处理模型是以对象形式封装的,主要涉及三个要素:要涉及三个要素:事件源事件源(An event source)事件对象事件对象(An event object)事件监听器事件监听器(event listener(s)事件监听器A事件监听器B事件对象事件对象事件源(例如:按钮)2023-9-2342事件处理机制事件处理机制

    22、事件源事件源 接受各种事件的对象,可供用户进行交互的接受各种事件的对象,可供用户进行交互的GUI组件组件 事件对象事件对象 封装了包含所发生的各种事件的有效信息封装了包含所发生的各种事件的有效信息 信息包括信息包括:事件源事件源的引用、以及的引用、以及事件监听器事件监听器在处理事在处理事件时所需要的其它各种信息件时所需要的其它各种信息 事件信息被包含在事件信息被包含在java.awt.event或或java.swing.event 包中,类名通常以单词包中,类名通常以单词Event结尾结尾 事件监听器事件监听器 接受接受事件对象事件对象,并处理事件对象,首先需要在事件,并处理事件对象,首先需要

    23、在事件源中登记事件监听器。也包含在源中登记事件监听器。也包含在java.awt.event或或java.swing.event 包中,类名通常以单词包中,类名通常以单词Listener结尾结尾 事件处理步骤 程序加入java.awt.event包:import java.awt.event;给所需的事件源对象注册事件监听器:事件源对象.addXXXListener(XXXListener);实现相应的方法。如果某个监听器接口包含多个方法,则需要实现所有的方法 事件处理机制事件处理机制 事件处理方式(1)利用监听器接口实现事件处理(2)利用监听器类实现事件处理(3)利用内部类实现事件处理(4)利

    24、用匿名内部类实现事件处理 事件处理机制事件处理机制(1)利用监听器接口实现事件处理同一个类中实现一个事件的接口。对该接口的方法进行定义,实现特定的功能。一般形式如下:public class 事件发生类名 implements 事件监听器接口 public事件发生类名()组件.addXXXListener(this);/注册到监听器对象,this表示当前对象。public void 监听器接口说明的方法1()public void 监听器接口说明的方法n()事件处理机制事件处理机制(2)利用监听器类实现事件处理就是通过扩展一个监听器接口,定义监听器类,然后对要求发生动作的组件再注册到这个监听器

    25、类的对象中。这种方法的一般形式如下:class 自定义监听类名extends 事件适配器(或 implements事件监听器)/定义监听器类 public void 监听器接口说明的方法1()public void 监听器接口说明的方法n()public class 事件发生类名 /定义事件发生的类 public自定义监听类名()组件.addXXXListener(new自定义监听类名();/注册组件到监听器对象 .事件处理机制事件处理机制(3)利用内部类实现事件处理这种方法就是将独立的监听器类定义成事件发生类的内部类。形式如下:public class事件发生的类名 /定义事件发生的类 pu

    26、blic事件发生的类名()组件.addXXXListener(new自定义监听类名();/注册组件到监听器对象 .class 自定义监听类名extends 事件适配器(或 implements事件监听器)/定义内部监听器类 public void 监听器接口说明的方法1()public void 监听器接口说明的方法n()/结束内部类事件处理机制事件处理机制(4)利用匿名内部类实现事件处理格式:组件对象.addXXXListener(new 事件监听器()/定义匿名内部类public void 监听器接口说明的方法1()public void 监听器接口说明的方法n();/结束匿名类定义事件处

    27、理机制事件处理机制 4.常见的事件处理类型 Java语言中提供事件处理的包主要有java.awt.event和javax.swing.event包。其中,java.awt.event包提供了对awt包和swing包常见组件的支持,与事件处理相关常见的的事件类和事件监听器接口见表。至于swing包提供了对高级事件处理。事件处理机制事件处理机制表9-1 常见的事件类和事件监听接口 事件类事件监听器接口ActionEventActionListenerItemEventItemListenerMouseEventMouseMotionListenerMouseListenerMouseWheelEv

    28、entMouseWheelListenerKeyEventKeyListenerFocusEventFocusListenerAdjustmentEventAdjustmentLlistenerWindowEventWindowListenerWindowStateListenerWindowFocusListener事件处理机制事件处理机制常用的事件处理1.动作事件处理动作事件处理是最简单和最常用的事件处理。当用户点击按钮或在文本框中按回车键或选择菜单项或使用列表等组件时,都可以采用动作事件来处理这些组件引发的动作。动作事件处理涉及到接口ActionListener与动作事件类ActionE

    29、vent。通过接口ActionListener可以实现对组件发生动作事件ActionEvent对象的监听与处理。ActionListener的主要方法方 法功 能public void actionPerformed(ActionEvent)动作发生时被调用常用的事件处理2.鼠标事件处理鼠标是一种最常见的输入方式。用户可以用鼠标绘制图形,利用鼠标实现特殊的控制,例如游戏操作的控制等功能。Java语言中主要提供了三种不同类型的鼠标事件:鼠标键事件;鼠标移动事件;鼠标轮滚动事件鼠标键事件多用于鼠标的单击处理,鼠标移动事件是用于鼠标移动的处理,至于鼠标轮滚动事件是从JDK1.4后引入的鼠标事件,用于

    30、鼠标轮的动作处理。这三种类型的鼠标事件一般是以容器组件作为事件源,它们各有自己的监听器。常用的事件处理 1.鼠标键事件.鼠标键事件处理涉及到监听器接口MouseListener和鼠标事件MouseEvent。对于这种事件处理的具体步骤是:组件通过方法addMouseListener()到注册MouseListener中。允许监听器对象在程序运行过程中监听组件是否有鼠标键事件MouseEvent对象发生。实现MouseListener接口的所有方法,提供事件发生的具体处理办法。常用的事件处理MouseEvent的主要方法方 法功 能int getButton()获取鼠标按键变更的状态int ge

    31、tClickCount()获取鼠标点击的次数Point getPoint()获取鼠标点击的位置int getX()获取鼠标的X位置int getY()获取鼠标的Y位置String getMouseModifiersText(int)获取控制键与鼠标的组合键的字符串 MouseListener的方法方 法功 能void mousePressed(MouseEvent)鼠标按下调用void mouseReleased(MouseEvent)鼠标释放调用void mouseEntered(MouseEvent)鼠标进入调用void mouseExited(MouseEvent)鼠标离开调用void

    32、mouseClicked(MouseEvent)鼠标点击调用9.2 常用的事件处理 2.鼠标移动事件;事件类MouseEvent还对应另一个监听器接口MouseMotionListener。该接口可以实现鼠标的两种运动的处理:鼠标移动处理和鼠标拖动的处理。实现鼠标移动事件处理的一般步骤如下:组件通过方法addMouseMotionListener()到注册MouseMotionListener中。允许MousMotionListener监听器对象在程序运行过程中监听组件是否有鼠标键事件MouseEvent对象发生。实现MouseMotionListener接口的所有方法,提供事件发生的具体处理

    33、办法。常用的事件处理 3.鼠标轮滚动事件 鼠标轮滚动事件可以处理鼠标中间的鼠标轮的动作。这种事件的实现依赖于事件类MouseWheelEvent和接口MouseWheelListener。实现鼠标轮滚动事件的具体步骤如下:组件通过方法addMouseWheelListener()到注册MouseWheelListener中。允许监听器在程序运行过程中监听组件是否有鼠标轮事件MouseWheelEvent对象的发生 实现MouseWheelListener接口的所有方法,提供事件发生的具体处理办法。对于类MouseWheelEvent是MouseEvent的直接子类,具有MouseEvent的特

    34、点。同时,它也具有自身的特征。常用的事件处理MouseWheelEvent的常见方法方 法功 能int getScrollAmount()获取滚动的单位数int getScrollType()获取滚动类型int getWheelRotation()获取鼠标轮旋转运动量int getUnitsToScroll()实现MouseWheelListener的便捷方法MouseWheelListener的方法方 法功 能void mouseWheelMoved(MouseWheelEvent)鼠标轮移动调用常用的事件处理3.窗口事件处理窗口事件是一种低级的事件处理,它可以处理窗口的打开、关闭、最小化、

    35、最大化、窗口的激活、无效、恢复、获得焦点等事件。具体的来说,窗口事件处理有三种类型:窗口基本事件处理、窗口状态事件处理以及窗口焦点事件处理。为了实现这些窗口事件处理可以通过窗口事件类WindowEvent和监听器接口WindowListener或 WindowStateListener或WindowFocusListener来实现。常用的事件处理 实现窗口处理的具体的步骤为:组件通过方法addWindowListener()到注册WindowListener中,利用方法addWindowStateListener()注册到WindowStateListener中,以及利用方法addWindow

    36、FocusListener()注册到WindowFocusListener中。允许上述提及的三种监听器在程序运行过程中监听组件是否有窗口事件WindowEvent对象发生。实现WindowListener、WindowStateListener和WindowFocusListener接口的所有方法,提供事件发生的具体处理办法。常用的事件处理WindowEvent的主要方法方 法功 能int getNewState()获取新状态int getOldState()获取旧状态Window getWindow()获取窗口Window getOppositeWindow()获取与激活或获得焦点的其他窗口

    37、 WindowStateListener的方法方 法功 能void windowStateChanged(WindowEvent)窗口状态改变调用 WindowFocusListener的方法方 法功 能void windowGainedFocus(WindowEvent)窗口获得焦点调用void windowLostFocus(WindowEvent)窗口失去焦点调用常用的事件处理WindowListener的方法方 法功 能void windowActivated(WindowEvent)窗口激活调用void windowDeactivated(WindowEvent)窗口失效调用 voi

    38、d windowClosed(WindowEvent)窗口已关闭调用 void windowClosing(WindowEvent)窗口正关闭调用 void windowOpened(WindowEvent)打开窗口调用 void windowIconified(WindowEvent)窗口最小化调用 void windowDeIconified(WindowEvent)窗口从最小化恢复调用常用的事件处理4.选项事件处理Swing包中的许多组件,如JCheckBox、JComboBox、JCheckBoxMenuItem,提供了“选中”和“未选”两种状态。希望对操作中产生的这两种状态能进行相应

    39、地处理。这就属于选项事件处理。与选项事件处理相关的有事件类ItemEvent和监听器接口ItemListener。具体实现选项事件的过程有:组件通过方法addItemListener()到注册ItemListener对象中。允许监听器在程序运行过程中监听组件是否有鼠标键事件ItemEvent对象发生。实现ItemListener接口的所有方法,提供事件发生的具体处理办法。常用的事件处理ItemEvent的常用方法方 法功 能Object getItem()获取引发事件的选项ItemSelectable getItemSelectable()获取事件源int getStateChange()获取

    40、变化的状态ItemListener的方法方 法功 能void itemStateChanged(ItemEvent)项目状态发生变化调动常用的事件处理5.焦点事件处理焦点事件是由于键盘或鼠标或程序本身状态的变化导致一些低级组件如JButton获得或失去键盘的焦点而产生。对于焦点事件有两种类型:持久性和暂时性。持久性的焦点事件是指焦点从一个组件到另外一个组件;而暂时性的焦点事件是指由于操作的原因组件暂时失去焦点,但是随着操作结束组件又会恢复焦点。常用的事件处理 焦点事件处理涉及到事件类FocusEvent和监听器接口FocusListener。利用它们可以实现焦点事件的具体步骤如下:组件通过方法

    41、addFocusListener()到注册FocusListener中。允许监听器在程序运行过程中监听组件是否有鼠标键事件FocusEvent对象发生。实现FocusListener接口的所有方法,提供事件发生的具体处理办法。常用的事件处理FocusEvent的常见方法方 法功 能Component getOppositeComponent()获取焦点变化关联的其他组件boolean isTemporary()获取焦点事件的类型FocusListener的方法方 法功 能void focusGained(FocusEvent)组件获取焦点时调用void focusLost(FocusEvent

    42、)组件失去焦点时调用常用的事件处理菜单事件处理菜单是应用软件经常使用的界面组件。用户可以选择菜单项来实现某种功能。在具体对菜单处理可以通过菜单项的类型不同而展开。如果菜单项是属于JMenuItem对象,对这种菜单项一般可以通过点击动作来激活动作事件,所以可以用动作事件处理的方式来实现。如果菜单项是JCheckBoxMenuItem对象,则可以采用选项事件处理的方式进行处理。要是菜单项是JRadioButtonMenuItem对象可以根据具体要求,可以选择用动作事件或选项事件处理。2023-9-2368处理鼠标事件处理鼠标事件 鼠标事件能够被鼠标事件能够被GUI组件捕获到组件捕获到 基本事件监听

    43、器的接口基本事件监听器的接口 MouseListener MouseMotionListener MouseWheelListener2023-9-2369示例示例【例例8-11】J_Button1.java,鼠标点击事件处理例程鼠标点击事件处理例程2023-9-2370示例示例【例例8-12】J_Button2.java,鼠标点击事件处理例程,修改为匿名类鼠标点击事件处理例程,修改为匿名类2023-9-2371示例示例【例例8-13】J_Draw.java,鼠标画画例程鼠标画画例程事件适配器 实现事件处理时,用户有时只定义监听器接口中对事件处理的部分方法,对于其他并没有具体的定义。在这种情况

    44、下,可以考虑使用事件适配器来处理事件。事件适配器就是一个可以兼容监听器接口的接口,它可以提供兼容监听器接口的默认所有方法。事件适配器的一个最主要的应用,就是可以简化监听器接口不必要的事件处理。比如,MouseListener接口有5个方法,如果在具体编程的时候只需要其中的一个方法,那么就可以定义一个事件适配器来实现这个特定的方法。另外,它可以通过与其他类的组合,设置一定的工作模式,实现特定的功能。2023-9-2373事件适配器事件适配器 事件适配器类事件适配器类(Adapter)只实现接口所需要处理的方法只实现接口所需要处理的方法通过覆盖通过覆盖 对于接口中的其它方法对于接口中的其它方法:系

    45、统会提供默认的方法系统会提供默认的方法(方方法体为空法体为空)事件适配器类事件适配器类与与事件监听器接口事件监听器接口的区别的区别?利用事件适配器类,只需实现所需处理的方法利用事件适配器类,只需实现所需处理的方法 利用事件监听器接口,必须实现所有的方法利用事件监听器接口,必须实现所有的方法 事件适配器类事件适配器类与与事件监听器接口事件监听器接口的执行效率的执行效率?利用利用事件适配器类事件适配器类处理事件,并不能提高执行效率处理事件,并不能提高执行效率2023-9-2374事件适配器类与事件监听器接口事件适配器类与事件监听器接口ComponentAdapterContainerAdapter

    46、FocusAdapterMouseAdapterWindowAdapterKeyAdapterMouseMotionAdapterContainerListenerFocusListenerMouseListenerWindowListenerKeyListenerMouseMotionListenerComponentListener事件适配器类事件监听器接口2023-9-2375本章总体纲要本章总体纲要 基本基本GUI组件组件 布局管理器布局管理器 事件处理模型事件处理模型 菜单菜单2023-9-2376菜单菜单 菜单可以使菜单可以使GUI变得更为简洁,树状变得更为简洁,树状 菜单项实际上

    47、可以看做另一种形式的按菜单项实际上可以看做另一种形式的按钮钮 菜单只能加入到具有成员方法菜单只能加入到具有成员方法(setJMenuBar)的类的实例对象中的类的实例对象中 例如例如:JFrame 和和Japplet2023-9-2377菜单术语菜单术语 菜单术语菜单术语 菜单栏菜单栏(menu bar)下拉式菜单下拉式菜单(menu)菜单项菜单项(menu item)与菜单相关的部分类:与菜单相关的部分类:JMenuBar JMenu JMenuItem JCheckBoxMenuItem(extends JMenuItem)JRadioButtonMenuItem(extends JMen

    48、uItem)菜单术语菜单术语2023-9-2379编写具有菜单编写具有菜单(Menu)的程序的程序 创建菜单栏创建菜单栏:(menu bar)给容器设置菜单栏,容器举例给容器设置菜单栏,容器举例:JFrame、JApplet setJMenuBar(myBar);创建菜单创建菜单 设置记忆符设置记忆符(Mnemonic)创建菜单项创建菜单项 设置记忆符设置记忆符(Mnemonic)类似于按钮,设置事件监听器,进行事件处类似于按钮,设置事件监听器,进行事件处理理2023-9-2380编写具有菜单编写具有菜单(Menu)的程序的程序 将菜单项加入到适当的菜单中将菜单项加入到适当的菜单中 myMen

    49、u.add(myItem);在菜单项间增加隔在菜单项间增加隔(separator)这不是必须的这不是必须的 myMenu.addSeparator();如果需要子菜单,则将子菜单加入到菜单中如果需要子菜单,则将子菜单加入到菜单中 myMenu.add(mySubMenu);将菜单加入到菜单栏中将菜单加入到菜单栏中 myMenuBar.add(myMenu);2023-9-2381记忆符记忆符(Mnemonic)一种触发菜单、子菜单或菜单项便捷方式一种触发菜单、子菜单或菜单项便捷方式 方法方法setMnemonicJMenu fileMenu=new JMenu(File)fileMenu.setMnemonic(F);在键盘上,按下在键盘上,按下 Alt+F 来触来触发菜单、子菜单或菜单项发菜单、子菜单或菜单项2023-9-2382示例示例【例例8-13】J_Menu.java,常规菜单例程常规菜单例程2023-9-2383弹出式菜单弹出式菜单(JPopupMenus)弹出式菜单弹出式菜单(JPopupMenus)通过按鼠标键而弹出的浮动式菜单通过按鼠标键而弹出的浮动式菜单2023-9-2384示例示例【例例8-14】J_PopupMenu.java,弹出式菜单例程弹出式菜单例程

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:网络程序设计java第08章Swing图形用户界面程序设计new教学课件.ppt(85页)
    链接地址:https://www.163wenku.com/p-7905417.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库