欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    网络程序设计java第08章Swing图形用户界面程序设计new.ppt

    • 资源ID:3225622       资源大小:1.01MB        全文页数:84页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    网络程序设计java第08章Swing图形用户界面程序设计new.ppt

    2019/8/2,1,网络程序设计 Network Programming 第八章 Swing 图形用户界面,赵建立 山东科技大学信息科学与工程学院 College of Information Science and Engineering , Shandong University of Science and Technology zhaojianligmail.com,2019/8/2,2,简介,图形用户界面(GUI) 数据的图形显示形式 友好的交互方式 简化计算机软件的学习过程 GUI示例 微软 IPOD IPHONE IPAD,2019/8/2,3,简介,乔布斯 76年大学辍学成立苹果公司,80年12月上市苹果公司高层产生了4名亿万富翁和40名以上的百万富翁 ; Lisa项目失败,1985年4经由董事会决议撤销经营大权; 1996年12月,回归苹果,在乔布斯的改革之下,“苹果”终于实现盈利。乔布斯刚上任时,苹果公司的亏损高达10亿美元,一年后却奇迹般地盈利3.09亿美元; 2011年8月初,苹果公司市值(约3371亿美元)超过埃克森美孚(约3333亿美元),成为全球第一大市值的上市公司,也是全球第一大资讯科技公司。,2019/8/2,4,Swing整体介绍,早期版本的GUI组件 所在的包: java.awt 与平台相关性较强,功能较弱 Swing GUI 组件 所在的包: javax.swing Swing组件的平台相关性较小(lightweight) Swing比AWT可以克服不同操作系统带来的图形界面的差别 Swing图形用户界面可以定制指定的操作系统风格的界面 两类图形用户界面之间在组件控制机制等方面存在一些冲突,一般建议使用swing。,2019/8/2,5,JComponent,组件类的层次结构 java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-javax.swing.JComponent JComponent大多数Swing组件类父类,2019/8/2,6,Swing 组件,组件和容器是Swing图形用户界面的组成部分: 容器 各种组件必须放在容器 容器本身也是一种组件 分类 顶层容器(小应用程序、对话框和框架) 一般容器(面板、滚动窗格、分裂窗格、选项卡窗格、工具条) 其它容器 组件 基本控制组件(按钮、单选按钮、复选框、组合框、列表框) 不可编辑的信息显示组件(标签、进度条) 可编辑的信息显示组件(文本编辑区、文本区域),2019/8/2,7,一些GUI组件,标签(JLabel) 文本框(JTextField) 按钮(JButton) 复选框(JCheckBox) 组合框(JComboBox) 文本(JTextArea) 框架(JFrame) 面板(JPanel),2019/8/2,8,标签(JLabel),标签 为GUI提供文本(主要)或图像(也可以)信息 对应类(JLabel) (JComponent的子类) 可以显示: 单行的只读的文本信息 图像 同时显示文本与图像信息 程序一般不修改标签的内容,2019/8/2,9,示例,【例8-1】J_LableFrame.java,在框架中添加标签的例程,2019/8/2,10,文本框(JTextField),文本框(JTextField) 显示单行的文本信息 JTextField extends JTextComponent,2019/8/2,11,示例,【例8-2】J_Text.java,文本编辑框例程,2019/8/2,12,按钮(JButton),当鼠标左键单击按钮组件时,能触发特定的事件 在Java中, 广义的按钮包括: 命令式按钮(JButton) 复选框(JCheckBox) 单选按钮(JRadioButton),2019/8/2,13,按钮类的层次结构,2019/8/2,14,示例,【例8-3】J_Button.java,命令式按钮、复选框和单选按钮例程,2019/8/2,15,组合框(JComboBox),组合框(JComboBox) 可以从下拉式的列表框中选取其中的列表项 有时也称为下拉框(drop-down list) 类JComboBox中的方法 getSelectedIndex( ) 返回当前被选中的项 setMaximumRowCount( n ) 设置最多显示列表项的项数 滚动条(Scrollbar)会自动加上,2019/8/2,16,示例,【例8-4】J_Lines.java,组合框、列表框、文本区域和滚动窗格例程,2019/8/2,17,框架(JFrame),Swing组件从功能分可以分成三种,分别是顶层组件,中间组件和基本组件。JFrame就是顶层组件,简单的描述也就是可以独立显示的组件。而中间组件是可以充当载体,但是不能独立显示的组件,可以把基础组件放在其中,但是还是要依托在顶层容器内才可以显示。基础组件则是实现人机交互的基本组件。 类 JFrame 是java.awt.Frame的子类 java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-java.awt.Window | +-java.awt.Frame | +-javax.swing.JFrame,2019/8/2,18,面板(JPanel),一种中间容器,在面板中添加组件,然后再将面板添加到其他容器中。 可以添加各种组件(包括面板组件) 面板(JPanel)的大小由它所包含的组件决定 当组件个数增加,面板(JPanel)也会随之而增大,2019/8/2,19,示例,【例8-5】J_Panel.java,面板例程,2019/8/2,20,本章总体纲要,基本GUI组件 布局管理器 事件处理模型 菜单,2019/8/2,21,布局管理器,用来控制组件在容器中的布局方式 应当尽量利用已有的基本布局方式 布局管理器处理组件布局的大部分细节 给顶层容器设置布局管理器:先通过顶层容器getContentPane获取顶层容器的内容窗格,再通过java.awt.Container的setLayout设置内容窗格的布局管理器; 给其他容器设置布局管理器:直接通过java.awt.Container的setLayout设置内容窗格的布局管理器。,2019/8/2,22,布局管理器,FlowLayout GridLayout BorderLayout CardLayout 组合布局管理器,2019/8/2,23,FlowLayout,是一种最基本的布局管理器 是 java.awt.Applet、java.awt.Panel 和 javax.swing.JPanel的默认布局方式 在容器中,从左到右依次放置GUI组件 当组件排到容器一行的末尾时,则从下一行开始接着排列组件 每行组件的对齐方式可以是: 左对齐、中间(默认对齐方式)和右对齐,2019/8/2,24,类FlowLayout 对齐方法,setAlignment( position_CONSTANT ) FlowLayout.LEFT FlowLayout.CENTER FlowLayout.RIGHT,2019/8/2,25,GridLayout,将容器按行和列等分成棋盘状,然后组件从第一行按照从左到右依次被放到这些矩形区域中,一行放满了,继续从下一行开开始。 Public GridLayout(int rows,int cols),2019/8/2,26,示例,【例8-6】J_GridLayout.java,网格布局管理器例程,2019/8/2,27,BorderLayout,是容器JFrame和JApplet的默认布局方式 将容器分成五个区域, NORTH (顶部) SOUTH (底部) WEST (左侧) EAST (右侧) CENTER (中间) 每个区域最多只能1个组件,2019/8/2,28,类BorderLayout方法,构造方法: BorderLayout( hGap, vGap ); hGap 区域间的水平间隙 vGap -区域间的竖直间隙 上面两个数据的默认值是0 添加组件 myContainer.add( component, position ) component 需要加入到容器中的组件 positions (BorderLayout.NORTH) NORTH, SOUTH, EAST, WEST, CENTER,2019/8/2,29,示例,【例8-7】J_Border.java,边界布局管理器例程,2019/8/2,30,CardLayout,CardLayout的布局方式有点象 “扑克牌” 一个组件压在另一个组件的上面,所以每次一般只能看到一个组件,2019/8/2,31,示例,【例8-8】J_CardLayout.java,卡片布局管理器例程,2019/8/2,32,BoxLayout,BoxLayout允许多个组件在容器中沿水平方向或竖直方向排列,不换行、换列。,2019/8/2,33,示例,【例8-9】J_CardLayout.java,卡片布局管理器例程,2019/8/2,34,布局管理器嵌套,实际上是容器的嵌套,被嵌套的容器可以具有不同的布局管理器 在嵌套的布局管理器中 JPanel 通常起到了 “桥”的作用,2019/8/2,35,示例,【例8-10】J_FlowBoxLayout.java,组合布局方式例程,Swing中的类在设计时采用了模型、视图、控制器(Model View Controller,MVC)模式作为每个组件的基本设计。MVC模式是GUI程序设计中比较常见的一种设计方法,因此理解MVC模式不仅有利于学习Swing,更有助于设计GUI程序。MVC模式将GUI组件拆分为模型、视图、控制器三个基本要素,每一个要素都对组件的表现起着至关重要的作用。,MVC,模型(Model)包含每个组件的数据状态,不同类型的组件有不同的模型。什么是组件的数据状态呢?例如滚动条组件(JScrollBar)的数据状态就包含滚动条的当前位置、最大值、最小值以及滚动条的宽度等。这些数据信息就是滚动条组件的模型。 视图(View)是组件在屏幕上的表现形式。由于Java是跨平台的语言,同一个组件在不同的平台上的显示是不相同的,在不同的外观风格下也是不相同的。为了让Java的GUI程序也应该做到“Write once,run anywhere”,Swing组件依据组件的模型和当前所处的显示环境进行组件绘制。 控制器(Controller)控制组件如何与事件进行交互。事件的形式有多种,例如鼠标单击、获得或者失去焦点、键盘点击等。当这些事件发生时,控制器根据事件的类型,决定组件如何响应,图 MVC模式,2019/8/2,39,本章总体纲要,基本GUI组件 布局管理器 事件处理模型 菜单,2019/8/2,40,事件处理模型,事件:对鼠标、键盘和其他输入设备的各种操作,一般称为事件。 GUI是由事件(event)驱动的 当用户与GUI交互可以产生事件(events) 一些常见的交互方式 移动鼠标 用鼠标点击按钮 在文本框中输入数据 关闭窗口等,2019/8/2,41,事件处理机制,事件处理模型是以对象形式封装的,主要涉及三个要素: 事件源(An event source) 事件对象(An event object) 事件监听器(event listener(s),2019/8/2,42,事件处理机制,事件源 接受各种事件的对象,可供用户进行交互的GUI组件 事件对象 封装了包含所发生的各种事件的有效信息 信息包括: 事件源的引用、以及事件监听器在处理事件时所需要的其它各种信息 事件信息被包含在java.awt.event或java.swing.event 包中,类名通常以单词Event结尾 事件监听器 接受事件对象,并处理事件对象,首先需要在事件源中登记事件监听器。也包含在java.awt.event或java.swing.event 包中,类名通常以单词Listener结尾,事件处理步骤 程序加入java.awt.event包: import java.awt.event; 给所需的事件源对象注册事件监听器: 事件源对象.addXXXListener(XXXListener); 实现相应的方法。如果某个监听器接口包含多个方法,则需要实现所有的方法,事件处理机制,事件处理方式 (1)利用监听器接口实现事件处理 (2)利用监听器类实现事件处理 (3)利用内部类实现事件处理 (4)利用匿名内部类实现事件处理,事件处理机制,(1)利用监听器接口实现事件处理 同一个类中实现一个事件的接口。对该接口的方法进行定义,实现特定的功能。一般形式如下: public class 事件发生类名 implements 事件监听器接口 public事件发生类名() 组件.addXXXListener(this); /注册到监听器对象,this表示当前对象。 public void 监听器接口说明的方法1() public void 监听器接口说明的方法n() ,事件处理机制,(2)利用监听器类实现事件处理 就是通过扩展一个监听器接口,定义监听器类,然后对要求发生动作的组件再注册到这个监听器类的对象中。这种方法的一般形式如下: class 自定义监听类名extends 事件适配器(或 implements事件监听器)/定义监听器类 public void 监听器接口说明的方法1() public void 监听器接口说明的方法n() public class 事件发生类名 /定义事件发生的类 public自定义监听类名() 组件.addXXXListener(new自定义监听类名(); /注册组件到监听器对象 . ,事件处理机制,(3)利用内部类实现事件处理 这种方法就是将独立的监听器类定义成事件发生类的内部类。形式如下: public class事件发生的类名 /定义事件发生的类 public事件发生的类名() 组件.addXXXListener(new自定义监听类名(); /注册组件到监听器对象 . class 自定义监听类名extends 事件适配器 (或 implements事件监听器)/定义内部监听器类 public void 监听器接口说明的方法1() public void 监听器接口说明的方法n() /结束内部类 ,事件处理机制,(4)利用匿名内部类实现事件处理 格式: 组件对象.addXXXListener(new 事件监听器() /定义匿名内部类 public void 监听器接口说明的方法1() public void 监听器接口说明的方法n() ); /结束匿名类定义,事件处理机制,4.常见的事件处理类型 Java语言中提供事件处理的包主要有java.awt.event和javax.swing.event包。 其中,java.awt.event包提供了对awt包和swing包常见组件的支持,与事件处理相关常见的的事件类和事件监听器接口见表。至于swing包提供了对高级事件处理。,事件处理机制,表9-1 常见的事件类和事件监听接口,事件处理机制,常用的事件处理,1.动作事件处理 动作事件处理是最简单和最常用的事件处理。当用户点击按钮或在文本框中按回车键或选择菜单项或使用列表等组件时,都可以采用动作事件来处理这些组件引发的动作。动作事件处理涉及到接口ActionListener与动作事件类ActionEvent。通过接口ActionListener可以实现对组件发生动作事件ActionEvent对象的监听与处理。,ActionListener的主要方法,常用的事件处理,2.鼠标事件处理 鼠标是一种最常见的输入方式。用户可以用鼠标绘制图形,利用鼠标实现特殊的控制,例如游戏操作的控制等功能。Java语言中主要提供了三种不同类型的鼠标事件: 鼠标键事件; 鼠标移动事件; 鼠标轮滚动事件 鼠标键事件多用于鼠标的单击处理,鼠标移动事件是用于鼠标移动的处理,至于鼠标轮滚动事件是从JDK1.4后引入的鼠标事件,用于鼠标轮的动作处理。这三种类型的鼠标事件一般是以容器组件作为事件源,它们各有自己的监听器。,常用的事件处理,1.鼠标键事件. 鼠标键事件处理涉及到监听器接口MouseListener和鼠标事件MouseEvent。对于这种事件处理的具体步骤是: 组件通过方法addMouseListener()到注册MouseListener中。允许监听器对象在程序运行过程中监听组件是否有鼠标键事件MouseEvent对象发生。 实现MouseListener接口的所有方法,提供事件发生的具体处理办法。,常用的事件处理,MouseEvent的主要方法,MouseListener的方法,9.2 常用的事件处理,2.鼠标移动事件; 事件类MouseEvent还对应另一个监听器接口MouseMotionListener。该接口可以实现鼠标的两种运动的处理:鼠标移动处理和鼠标拖动的处理。实现鼠标移动事件处理的一般步骤如下: 组件通过方法addMouseMotionListener()到注册MouseMotionListener中。允许MousMotionListener监听器对象在程序运行过程中监听组件是否有鼠标键事件MouseEvent对象发生。 实现MouseMotionListener接口的所有方法,提供事件发生的具体处理办法。,常用的事件处理,3.鼠标轮滚动事件 鼠标轮滚动事件可以处理鼠标中间的鼠标轮的动作。这种事件的实现依赖于事件类MouseWheelEvent和接口MouseWheelListener。实现鼠标轮滚动事件的具体步骤如下: 组件通过方法addMouseWheelListener()到注册MouseWheelListener中。允许监听器在程序运行过程中监听组件是否有鼠标轮事件MouseWheelEvent对象的发生 实现MouseWheelListener接口的所有方法,提供事件发生的具体处理办法。 对于类MouseWheelEvent是MouseEvent的直接子类,具有MouseEvent的特点。同时,它也具有自身的特征。,常用的事件处理,MouseWheelEvent的常见方法,MouseWheelListener的方法,常用的事件处理,3.窗口事件处理 窗口事件是一种低级的事件处理,它可以处理窗口的打开、关闭、最小化、最大化、窗口的激活、无效、恢复、获得焦点等事件。具体的来说,窗口事件处理有三种类型:窗口基本事件处理、窗口状态事件处理以及窗口焦点事件处理。为了实现这些窗口事件处理可以通过窗口事件类WindowEvent和监听器接口WindowListener或 WindowStateListener或WindowFocusListener来实现。,常用的事件处理,实现窗口处理的具体的步骤为: 组件通过方法addWindowListener()到注册WindowListener中,利用方法addWindowStateListener()注册到WindowStateListener中,以及利用方法addWindowFocusListener()注册到WindowFocusListener中。允许上述提及的三种监听器在程序运行过程中监听组件是否有窗口事件WindowEvent对象发生。 实现WindowListener、WindowStateListener和WindowFocusListener接口的所有方法,提供事件发生的具体处理办法。,常用的事件处理,WindowEvent的主要方法,WindowStateListener的方法,WindowFocusListener的方法,常用的事件处理,WindowListener的方法,常用的事件处理,4.选项事件处理 Swing包中的许多组件,如JCheckBox、JComboBox、JCheckBoxMenuItem,提供了“选中”和“未选”两种状态。希望对操作中产生的这两种状态能进行相应地处理。这就属于选项事件处理。与选项事件处理相关的有事件类ItemEvent和监听器接口ItemListener。 具体实现选项事件的过程有: 组件通过方法addItemListener()到注册ItemListener对象中。允许监听器在程序运行过程中监听组件是否有鼠标键事件ItemEvent对象发生。 实现ItemListener接口的所有方法,提供事件发生的具体处理办法。,常用的事件处理,ItemEvent的常用方法,ItemListener的方法,常用的事件处理,5.焦点事件处理 焦点事件是由于键盘或鼠标或程序本身状态的变化导致一些低级组件如JButton获得或失去键盘的焦点而产生。对于焦点事件有两种类型:持久性和暂时性。持久性的焦点事件是指焦点从一个组件到另外一个组件;而暂时性的焦点事件是指由于操作的原因组件暂时失去焦点,但是随着操作结束组件又会恢复焦点。,常用的事件处理,焦点事件处理涉及到事件类FocusEvent和监听器接口FocusListener。利用它们可以实现焦点事件的具体步骤如下: 组件通过方法addFocusListener()到注册FocusListener中。允许监听器在程序运行过程中监听组件是否有鼠标键事件FocusEvent对象发生。 实现FocusListener接口的所有方法,提供事件发生的具体处理办法。,常用的事件处理,FocusEvent的常见方法,FocusListener的方法,常用的事件处理,菜单事件处理 菜单是应用软件经常使用的界面组件。用户可以选择菜单项来实现某种功能。在具体对菜单处理可以通过菜单项的类型不同而展开。如果菜单项是属于JMenuItem对象,对这种菜单项一般可以通过点击动作来激活动作事件,所以可以用动作事件处理的方式来实现。如果菜单项是JCheckBoxMenuItem对象,则可以采用选项事件处理的方式进行处理。要是菜单项是JRadioButtonMenuItem对象可以根据具体要求,可以选择用动作事件或选项事件处理。,2019/8/2,68,处理鼠标事件,鼠标事件能够被GUI组件捕获到 基本事件监听器的接口 MouseListener MouseMotionListener MouseWheelListener,2019/8/2,69,示例,【例8-11】J_Button1.java,鼠标点击事件处理例程,2019/8/2,70,示例,【例8-12】J_Button2.java,鼠标点击事件处理例程,修改为匿名类,2019/8/2,71,示例,【例8-13】J_Draw.java,鼠标画画例程,事件适配器,实现事件处理时,用户有时只定义监听器接口中对事件处理的部分方法,对于其他并没有具体的定义。在这种情况下,可以考虑使用事件适配器来处理事件。事件适配器就是一个可以兼容监听器接口的接口,它可以提供兼容监听器接口的默认所有方法。 事件适配器的一个最主要的应用,就是可以简化监听器接口不必要的事件处理。比如,MouseListener接口有5个方法,如果在具体编程的时候只需要其中的一个方法,那么就可以定义一个事件适配器来实现这个特定的方法。另外,它可以通过与其他类的组合,设置一定的工作模式,实现特定的功能。,2019/8/2,73,事件适配器,事件适配器类(Adapter) 只实现接口所需要处理的方法通过覆盖 对于接口中的其它方法: 系统会提供默认的方法(方法体为空) 事件适配器类与事件监听器接口的区别? 利用事件适配器类,只需实现所需处理的方法 利用事件监听器接口,必须实现所有的方法 事件适配器类与事件监听器接口的执行效率? 利用事件适配器类处理事件,并不能提高执行效率,2019/8/2,74,事件适配器类与事件监听器接口,2019/8/2,75,本章总体纲要,基本GUI组件 布局管理器 事件处理模型 菜单,2019/8/2,76,菜单,菜单可以使GUI变得更为简洁,树状 菜单项实际上可以看做另一种形式的按钮 菜单只能加入到具有成员方法(setJMenuBar)的类的实例对象中 例如: JFrame 和Japplet,2019/8/2,77,菜单术语,菜单术语 菜单栏(menu bar) 下拉式菜单(menu) 菜单项(menu item) 与菜单相关的部分类: JMenuBar JMenu JMenuItem JCheckBoxMenuItem (extends JMenuItem) JRadioButtonMenuItem (extends JMenuItem),菜单术语,2019/8/2,79,编写具有菜单(Menu)的程序,创建菜单栏: (menu bar) 给容器设置菜单栏,容器举例: JFrame、JApplet setJMenuBar( myBar ); 创建菜单 设置记忆符(Mnemonic) 创建菜单项 设置记忆符(Mnemonic) 类似于按钮,设置事件监听器,进行事件处理,2019/8/2,80,编写具有菜单(Menu)的程序,将菜单项加入到适当的菜单中 myMenu.add( myItem ); 在菜单项间增加隔(separator)这不是必须的 myMenu.addSeparator(); 如果需要子菜单,则将子菜单加入到菜单中 myMenu.add( mySubMenu ); 将菜单加入到菜单栏中 myMenuBar.add( myMenu );,2019/8/2,81,记忆符(Mnemonic),一种触发菜单、子菜单或菜单项便捷方式 方法setMnemonic JMenu fileMenu = new JMenu( “File“ ) fileMenu.setMnemonic( 'F' ); 在键盘上,按下 Alt + F 来触 发菜单、子菜单或菜单项,2019/8/2,82,示例,【例8-13】J_Menu.java,常规菜单例程,2019/8/2,83,弹出式菜单(JPopupMenus),弹出式菜单( JPopupMenus ) 通过按鼠标键而弹出的浮动式菜单,2019/8/2,84,示例,【例8-14】J_PopupMenu.java,弹出式菜单例程,

    注意事项

    本文(网络程序设计java第08章Swing图形用户界面程序设计new.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开