网络程序设计java第08章Swing图形用户界面程序设计new.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《网络程序设计java第08章Swing图形用户界面程序设计new.ppt》由会员分享,可在线阅读,更多相关《网络程序设计java第08章Swing图形用户界面程序设计new.ppt(84页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、网络程序设计java第08章Swing图形用户界面程序设计new Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望2022/11/162简介简介图形用户界面图形用户界面(GUI)数据的图形显示形式数据的图形显示形式友好的交互方式友好的交互方式简化计算机软件的学习过程简化计算机软件的学习过程GUI示例示例微软微软 IPOD IPHONE IPAD2022/11/163简介简介乔布斯乔布斯76年大学辍学成立苹果公司,80年12月上市苹果公司高层产生了4名亿万富翁和40名
2、以上的百万富翁;Lisa项目失败,1985年4经由董事会决议撤销经营大权;1996年12月,回归苹果,在乔布斯的改革之下,“苹果”终于实现盈利。乔布斯刚上任时,苹果公司的亏损高达10亿美元,一年后却奇迹般地盈利3.09亿美元;2011年8月初,苹果公司市值(约3371亿美元)超过埃克森美孚(约3333亿美元),成为全球第一大市值的上市公司,也是全球第一大资讯科技公司。2022/11/164Swing整体介绍整体介绍早期版本的早期版本的GUI组件组件所在的包所在的包:java.awt与平台相关性较强与平台相关性较强,功能较弱功能较弱Swing GUI 组件组件所在的包所在的包:javax.swi
3、ngSwing组件的平台相关性较小组件的平台相关性较小(lightweight)Swing比比AWT可以克服不同操作系统带来的图形界面的差别可以克服不同操作系统带来的图形界面的差别Swing图形用户界面可以定制指定的操作系统风格的界面图形用户界面可以定制指定的操作系统风格的界面两类图形用户界面之间在组件控制机制等方面存在一些冲突,两类图形用户界面之间在组件控制机制等方面存在一些冲突,一般建议使用一般建议使用swing。2022/11/165JComponent组件类的层次结构组件类的层次结构java.lang.Object|+-java.awt.Component|+-java.awt.Con
4、tainer|+-javax.swing.JComponentJComponent大多数大多数Swing组件类父类组件类父类2022/11/166Swing 组件组件组件和容器是组件和容器是Swing图形用户界面的组成部分:图形用户界面的组成部分:容器容器各种组件必须放在容器各种组件必须放在容器容器本身也是一种组件容器本身也是一种组件分类分类顶层容器(小应用程序、对话框和框架)顶层容器(小应用程序、对话框和框架)一般容器(面板、滚动窗格、分裂窗格、选项卡窗格、工具条)一般容器(面板、滚动窗格、分裂窗格、选项卡窗格、工具条)其它容器其它容器组件组件基本控制组件(按钮、单选按钮、复选框、组合框、列
5、表框)基本控制组件(按钮、单选按钮、复选框、组合框、列表框)不可编辑的信息显示组件(标签、进度条)不可编辑的信息显示组件(标签、进度条)可编辑的信息显示组件(文本编辑区、文本区域)可编辑的信息显示组件(文本编辑区、文本区域)2022/11/167一些一些GUI组件组件标签标签(JLabel)文本框文本框(JTextField)按钮按钮(JButton)复选框复选框(JCheckBox)组合框组合框(JComboBox)文本文本(JTextArea)框架框架(JFrame)面板面板(JPanel)2022/11/168标签标签(JLabel)标签标签为为GUI提供文本提供文本(主要主要)或图像或
6、图像(也可以也可以)信息信息对应类对应类(JLabel)(JComponent的子类的子类)可以显示可以显示:单行的只读的文本信息单行的只读的文本信息图像图像同时显示文本与图像信息同时显示文本与图像信息程序一般不修改标签的内容程序一般不修改标签的内容2022/11/169示例示例【例例8-1】J_LableFrame.java,在框架中添加标签的例程在框架中添加标签的例程2022/11/1610文本框文本框(JTextField)文本框文本框(JTextField)显示单行的文本信息显示单行的文本信息JTextField extends JTextComponent2022/11/1611示例
7、示例【例例8-2】J_Text.java,文本编辑框例程文本编辑框例程2022/11/1612按钮按钮(JButton)当鼠标左键单击按钮组件时,能触发特定当鼠标左键单击按钮组件时,能触发特定的事件的事件在在Java中中,广义的按钮包括广义的按钮包括:命令式按钮命令式按钮(JButton)复选框复选框(JCheckBox)单选按钮单选按钮(JRadioButton)2022/11/1613按钮类的层次结构按钮类的层次结构javax.swing.JComponentjavax.swing.AbstractButtonjavax.swing.JButtonjavax.swing.JToggleBu
8、ttonjavax.swing.JCheckBoxjavax.swing.JRadioButton2022/11/1614示例示例【例例8-3】J_Button.java,命令式按钮、复选框和单选按钮例程命令式按钮、复选框和单选按钮例程2022/11/1615组合框组合框(JComboBox)组合框组合框(JComboBox)可以从下拉式的列表框中选取其中的列表项可以从下拉式的列表框中选取其中的列表项有时也称为下拉框有时也称为下拉框(drop-down list)类类JComboBox中的方法中的方法getSelectedIndex()返回当前被选中的项返回当前被选中的项setMaximumR
9、owCount(n)设置最多显示列表项的项数设置最多显示列表项的项数滚动条滚动条(Scrollbar)会自动加上会自动加上2022/11/1616示例示例【例例8-4】J_Lines.java,组合框、列表框、文本区域和滚动窗格例程组合框、列表框、文本区域和滚动窗格例程2022/11/1617框架框架(JFrame)Swing组件从功能分可以分成三种,分别是顶层组件,中间组件和基本组件。JFrame就是顶层组件,简单的描述也就是可以独立显示的组件。而中间组件是可以充当载体,但是不能独立显示的组件,可以把基础组件放在其中,但是还是要依托在顶层容器内才可以显示。基础组件则是实现人机交互的基本组件。
10、类类 JFrame 是是java.awt.Frame的子类的子类java.lang.Object|+-java.awt.Component|+-java.awt.Container|+-java.awt.Window|+-java.awt.Frame|+-javax.swing.JFrame2022/11/1618面板面板(JPanel)一种中间容器,在面板中添加组件,然后一种中间容器,在面板中添加组件,然后再将面板添加到其他容器中。再将面板添加到其他容器中。可以添加各种组件可以添加各种组件(包括面板组件包括面板组件)面板面板(JPanel)的大小由它所包含的组件决定的大小由它所包含的组件决定
11、当组件个数增加,面板当组件个数增加,面板(JPanel)也会随之而增大也会随之而增大2022/11/1619示例示例【例例8-5】J_Panel.java,面板例程面板例程2022/11/1620本章总体纲要本章总体纲要基本基本GUI组件组件 布局管理器布局管理器事件处理模型事件处理模型菜单菜单2022/11/1621布局管理器布局管理器1.1.用来控制组件在容器中的布局方式用来控制组件在容器中的布局方式2.2.应当尽量利用已有的基本布局方式应当尽量利用已有的基本布局方式3.3.布局管理器处理组件布局的大部分细节布局管理器处理组件布局的大部分细节 给顶层容器设置布局管理器:先通过顶层容器给顶层
12、容器设置布局管理器:先通过顶层容器getContentPane获获取顶层容器的内容窗格,再通过取顶层容器的内容窗格,再通过java.awt.Container的的setLayout设置内容窗格的布局管理器;设置内容窗格的布局管理器;给其他容器设置布局管理器:直接通过给其他容器设置布局管理器:直接通过java.awt.Container的的setLayout设置内容窗格的布局管理器。设置内容窗格的布局管理器。2022/11/1622布局管理器布局管理器FlowLayoutGridLayoutBorderLayoutCardLayout组合布局管理器组合布局管理器2022/11/1623FlowL
13、ayout是一种最基本的布局管理器是一种最基本的布局管理器是是 java.awt.Applet、java.awt.Panel 和和 javax.swing.JPanel的默认布局方式的默认布局方式在容器中,从左到右依次放置在容器中,从左到右依次放置GUI组件组件当组件排到容器一行的末尾时,则从下一当组件排到容器一行的末尾时,则从下一行开始接着排列组件行开始接着排列组件每行组件的对齐方式可以是每行组件的对齐方式可以是:左对齐、中间左对齐、中间(默认对齐方式默认对齐方式)和右对齐和右对齐2022/11/1624类类FlowLayout 对齐方法对齐方法setAlignment(position_C
14、ONSTANT)FlowLayout.LEFTFlowLayout.CENTERFlowLayout.RIGHT2022/11/1625GridLayout将容器按行和列等分成棋盘状,然后组件将容器按行和列等分成棋盘状,然后组件从第一行按照从左到右依次被放到这些矩从第一行按照从左到右依次被放到这些矩形区域中,一行放满了,继续从下一行开形区域中,一行放满了,继续从下一行开开始。开始。Public GridLayout(int rows,int cols)2022/11/1626示例示例【例例8-6】J_GridLayout.java,网格布局管理器例程网格布局管理器例程2022/11/1627B
15、orderLayout是容器是容器JFrame和和JApplet的默认布局方式的默认布局方式将容器分成五个区域,将容器分成五个区域,NORTH(顶部顶部)SOUTH(底部底部)WEST(左侧左侧)EAST(右侧右侧)CENTER(中间中间)每个区域最多只能每个区域最多只能1个组件个组件2022/11/1628类类BorderLayout方法方法构造方法构造方法:BorderLayout(hGap,vGap);hGap 区域间的水平间隙区域间的水平间隙vGap-区域间的竖直间隙区域间的竖直间隙上面两个数据的默认值是上面两个数据的默认值是0添加组件添加组件myContainer.add(compo
16、nent,position)component 需要加入到容器中的组件需要加入到容器中的组件positions (BorderLayout.NORTH)NORTH,SOUTH,EAST,WEST,CENTER2022/11/1629示例示例【例例8-7】J_Border.java,边界布局管理器例程边界布局管理器例程2022/11/1630CardLayoutCardLayout的布局方式有点象的布局方式有点象“扑克牌扑克牌”一个组件压在另一个组件的上面,所以每一个组件压在另一个组件的上面,所以每次一般只能看到一个组件次一般只能看到一个组件2022/11/1631示例示例【例例8-8】J_Ca
17、rdLayout.java,卡片布局管理器例程卡片布局管理器例程2022/11/1632BoxLayoutBoxLayout允许多个组件在容器中沿水平方允许多个组件在容器中沿水平方向或竖直方向排列,不换行、换列。向或竖直方向排列,不换行、换列。2022/11/1633示例示例【例例8-9】J_CardLayout.java,卡片布局管理器例程卡片布局管理器例程2022/11/1634布局管理器嵌套布局管理器嵌套实际上是容器的嵌套,被嵌套的容器可以实际上是容器的嵌套,被嵌套的容器可以具有不同的布局管理器具有不同的布局管理器在嵌套的布局管理器中在嵌套的布局管理器中JPanel 通常起到了通常起到了
18、“桥桥”的作用的作用2022/11/1635示例示例【例例8-10】J_FlowBoxLayout.java,组合布局方式例程组合布局方式例程Swing中的类在设计时采用了模型、视图、控制器(Model View Controller,MVC)模式作为每个组件的基本设计。MVC模式是GUI程序设计中比较常见的一种设计方法,因此理解MVC模式不仅有利于学习Swing,更有助于设计GUI程序。MVC模式将GUI组件拆分为模型、视图、控制器三个基本要素,每一个要素都对组件的表现起着至关重要的作用。MVC模型(Model)包含每个组件的数据状态,不同类型的组件有不同的模型。什么是组件的数据状态呢?例如
19、滚动条组件(JScrollBar)的数据状态就包含滚动条的当前位置、最大值、最小值以及滚动条的宽度等。这些数据信息就是滚动条组件的模型。视图(View)是组件在屏幕上的表现形式。由于Java是跨平台的语言,同一个组件在不同的平台上的显示是不相同的,在不同的外观风格下也是不相同的。为了让Java的GUI程序也应该做到“Write once,run anywhere”,Swing组件依据组件的模型和当前所处的显示环境进行组件绘制。控制器(Controller)控制组件如何与事件进行交互。事件的形式有多种,例如鼠标单击、获得或者失去焦点、键盘点击等。当这些事件发生时,控制器根据事件的类型,决定组件如
20、何响应 图 MVC模式2022/11/1639本章总体纲要本章总体纲要基本基本GUI组件组件 布局管理器布局管理器事件处理模型事件处理模型菜单菜单2022/11/1640事件处理模型事件处理模型事件:对鼠标、键盘和其他输入设备的各事件:对鼠标、键盘和其他输入设备的各种操作,一般称为事件。种操作,一般称为事件。GUI是由事件是由事件(event)驱动的驱动的当用户与当用户与GUI交互可以产生事件交互可以产生事件(events)一些常见的交互方式一些常见的交互方式移动鼠标移动鼠标用鼠标点击按钮用鼠标点击按钮在文本框中输入数据在文本框中输入数据关闭窗口等关闭窗口等2022/11/1641事件处理机制
21、事件处理机制事件处理模型是以对象形式封装的,主事件处理模型是以对象形式封装的,主要涉及三个要素:要涉及三个要素:事件源事件源(An event source)事件对象事件对象(An event object)事件监听器事件监听器(event listener(s)事件监听器A事件监听器B事件对象事件对象事件源(例如:按钮)2022/11/1642事件处理机制事件处理机制事件源事件源接受各种事件的对象,可供用户进行交互的接受各种事件的对象,可供用户进行交互的GUI组件组件事件对象事件对象封装了包含所发生的各种事件的有效信息封装了包含所发生的各种事件的有效信息信息包括信息包括:事件源事件源的引用、
22、以及的引用、以及事件监听器事件监听器在处理事在处理事件时所需要的其它各种信息件时所需要的其它各种信息事件信息被包含在事件信息被包含在java.awt.event或或java.swing.event 包中,类名通常以单词包中,类名通常以单词Event结尾结尾事件监听器事件监听器接受接受事件对象事件对象,并处理事件对象,首先需要在事件源,并处理事件对象,首先需要在事件源中登记事件监听器。也包含在中登记事件监听器。也包含在java.awt.event或或java.swing.event 包中,类名通常以单词包中,类名通常以单词Listener结尾结尾事件处理步骤 程序加入java.awt.event
23、包:import java.awt.event;给所需的事件源对象注册事件监听器:事件源对象.addXXXListener(XXXListener);实现相应的方法。如果某个监听器接口包含多个方法,则需要实现所有的方法 事件处理机制事件处理机制事件处理方式(1)利用监听器接口实现事件处理(2)利用监听器类实现事件处理(3)利用内部类实现事件处理(4)利用匿名内部类实现事件处理 事件处理机制事件处理机制(1)利用监听器接口实现事件处理同一个类中实现一个事件的接口。对该接口的方法进行定义,实现特定的功能。一般形式如下:public class 事件发生类名 implements 事件监听器接口 p
24、ublic事件发生类名()组件.addXXXListener(this);/注册到监听器对象,this表示当前对象。public void 监听器接口说明的方法1()public void 监听器接口说明的方法n()事件处理机制事件处理机制(2)利用监听器类实现事件处理就是通过扩展一个监听器接口,定义监听器类,然后对要求发生动作的组件再注册到这个监听器类的对象中。这种方法的一般形式如下:class 自定义监听类名extends 事件适配器(或 implements事件监听器)/定义监听器类 public void 监听器接口说明的方法1()public void 监听器接口说明的方法n()pu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络程序设计 java 08 Swing 图形 用户界面 程序设计 new
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内