《Java程序设计教程》课件第十三章:Swing UI设计.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《Java程序设计教程》课件第十三章:Swing UI设计.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计教程 Java程序设计教程课件第十三章:Swing UI设计 Java 程序设计 教程 课件 第十三 Swing UI 设计
- 资源描述:
-
1、本章学习目标:掌握JAVA容器类JFrame和JPanel的使用 掌握AWT和Swing常用布局的使用 了解JAVA事件处理机制 掌握常用可视化组件的使用第十三章第十三章 Swing UISwing UI设计设计第第1 1节节partWindowBuilder插件 WindowBuilder是一款基于Eclipse平台的插件,具备SWT/JFACE、Swing和GWT三大功能,可以对Java GUI进行双向设计。WindowBuilder是一款不可多得的Java体系中的“所见即所得”开发工具。WindowBuilder插件本节概述 WindowBuilder插件是基于Eclipse的,安装前需
2、要JDK开发环境和Eclipse开发工具。在Eclipse官方网站提供了WindowBuilder插件的下载即安装说明,地址如下:http:/www.eclipse.org/WindowBuilder/download.php 目前WindowBuilder插件支持Eclipse的Juno、Kepler、Luna和Mars版本,如图13.1所示,每个版本又分为发行版(Release Version)和整合版(Integration Version)。13.1.1WindowBuilder插件安装WindowBuilder插件安装 在Eclipse中安装WindowBuilder插件有以下两种方
3、式进行安装。(1)在线安装:在图13.1中,单击表格中的Release VersionUpdate Site4.4(Luna)所对应的link,进入在线安装界面,浏览器地址栏中的地址即为在线安装地址。(2)离线安装:点击Release VersionZipped Update Site4.4(Luna)所对应的link(MD5 Hash),下载WindowBuilder插件的离线安装包。WindowBuilder插件安装13.1.1 1.1.在线安装方式在线安装方式 通过在线方式安装Eclipse的WindowBuilder插件的步骤如下所示:【步骤一】代开Eclipse集成开发工具,在Hel
4、p菜单中选择Install New SoftCWare命令,如图13.2所示。进入安装界面,如图13.3所示。WindowBuilder插件安装13.1.1 【步骤二】单击Add按钮,打开站点添加界面,如图13.4所示,添加WindowBuilder插件的在线安装地址为:http:/download.eclipse.org/windowbuilder/WB/release/R201506241200-1/4.4/WindowBuilder插件安装13.1.1 【步骤三】单击OK按钮,返回安装主界面,如图13.5所示。选择Swing Designer、SWT Designer和WindowBui
5、lder Engine选项后,单击Next按钮,进入安装细节界面,如图13.6所示。WindowBuilder插件安装13.1.1 【步骤四】单击Next按钮,进入协议许可界面,如图13.7所示。单击Finish按钮,进入WindowBuilder插件安装界面,如图13.8所示。安装完成后,重新启动Eclipse开发工具即可。WindowBuilder插件安装13.1.1 2.2.离线安装方式离线安装方式 下载WindowBuilder插件的离线安装包后,可以通过离线方式进行安装,具体步骤与在线安装相同,只是在步骤一单击Add按钮后,进入本地资源界面,与步骤二界面相同。其中Local按钮用于选
6、取本地文件夹,Archive按钮用于选取本地jar或zip类型的压缩文件。输入本地资源名称,选取下载本地的离线包后,单击OK按钮返回安装主界面。WindowBuilder插件安装13.1.1 在Eclipse中的Java项目中,单击FileNewOther菜单命令,通过向导方式创建一个JFrame窗体,如图13.9所示。选择JFrame选项,单击Next按钮进入常见JFrame对话框。13.1.2WindowBuilder插件的使用过程WindowBuilder插件的使用过程 在创建JFrame对话框中,输入类名LoginFrame,单击Finish按钮即完成JFrame窗体的创建,如图13.
7、10所示。WindowBuilder插件的使用过程13.1.2 在代码编辑窗口,如图13.11所示,单击左下角的Source和Design选项卡(或按F12快捷键)可以在源代码和设计界面之间进行切换。WindowBuilder插件的使用过程13.1.2 源代码窗口可以直接编写Java代码;而界面设计窗口可以通过拖拽控件实现窗体的设计;界面设计窗口主要有结构窗口、属性窗口、工具窗口、控件窗口和设计窗口五部分组成,如图13.12所示。WindowBuilder插件的使用过程13.1.2 在结构窗口中,可以将当前JFrame窗体中的控件以树状结构显示出来;当选取某一控件时,设计窗口中相应的元素处于被
8、选中状态。控件窗口中包含System、Containers、Layouts、Strust&Sping、Components、Swing Actions、Menu、AWT Components和JGoodies等组件,通过拖拽的方式可以快速添加到设计窗口中。当在设计窗口中选取某一控件时,属性窗口相应地发生改变,通过可视化界面可以快速设置该控件的相关属性。在属性窗口中,单击事件切换按钮 可以在属性列表和事件列表之间进行切换。在设计界面中先选中某一控件,再在属性窗口的事件列表中找到所需的事件,通过双击的方式可以为该控件添加相应的事件处理。WindowBuilder插件的使用过程13.1.2第第2 2
9、节节partGUI概述 用户喜欢功能丰富、操作简单且直观的应用程序。为了提高用户体验度,使系统的交互性和操作性更好,大多数应用程序都采用图形用户界面(Graphical User Interface,GUI))的形式。Java中提供了AWT(Abstract Window Toolkit,抽象窗口工具包)和Swing来实现GUI图形用户界面编程。G U I 概 述本节概述13.2.1AWT和Swing 在JDK 1.0发布时,Sun公司提供了一套基本的GUI类库,这套基本类库被称为AWT。AWT为Java程序提供了基本的图形组件,实现一些基本的功能,并希望在所有平台上都能运行。使用AWT提供的
10、组件所构建的GUI应用程序具有以下几个问题:(1)使用AWT做出的图形用户界面在所有的平台上都显得很丑陋,功能也非常有限;(2)运行在不同的平台上,呈现不同的外观效果,为保证界面的一致性和可预见性,程序员需要在不同平台上进行测试;(3)AWT为了迎合所有主流操作系统的界面设计,AWT组件只能使用这些操作系统上图形界面组件的交集,所以不能使用特定操作系统上复杂的图形界面组件,最多只能使用四种字体;(4)编程模式非常笨拙,并且是非面向对象的编程模式。AWT和SwingAWT和Swing 在1996年,Netscape公司开发了一套工作方式完全不同的GUI库,被称为IFC(Internet Foun
11、dation Class)。IFC除了窗口本身需要借助操作系统的窗口来实现,其他组件都是绘制在空白窗口中。IFC能够真正地实现各平台界面的一致性,Sun公司与Netscape公司合作完善了这种方案,并创建了一套新的用户界面库,并命名为Swing。Swing组件完全采用Java语言编程,不再需要使用那些平台所用的复杂的GUI功能,因此,使用Swing构建的GUI应用程序在不同平台上运行时,所显示的外观效果完全相同。AWT、Swing、2D API、辅助功能API以及拖放API共同组成了JFC(Java Foundation Class,Java基础类库),其中Swing全面替代了Java 1.0
12、中的AWT组件,但保留了Java 1.1中的AWT事件模型。总体上,Swing替代了绝大部分AWT组件,但并没有完全替代AWT,而是在AWT的基础之上,进行了有力的补充和加强。13.2.1AWT和Swing 使用Swing组件进行GUI编程的优势有以下几点:(1)Swing用户界面组件丰富,使用便捷;(2)Swing组件对底层平台的依赖少,与平台相关的Bug也很少;(3)能够保证不同平台上用户一致的感观效果;(4)Swing组件采用MVC(Model-View-Controller,即模型-视图-控制器)设计模式,其中模型用于维护组件的各种状态,视图是组件的可视化表现。控制器用于控制对于各种事
13、件,组件做出怎样的响应。13.2.1Swing组件层次 大部分Swing组件都是JComponent抽象类的直接或间接子类,在JComponent抽象类中定义了所有子类组件的通用方法。JComponent类位于javax.swing包中,javax包是一个Java扩展包。要有效地使用GUI组件,必须理解javax.swing和java.awt包中组件之间的继承层次,尤其是理解Component类、Container类和JComponent类,其中声明了大多数Swing组件的通用特性。Swing中的JComponent类是AWT中java.awt.Container类的子类,也是Swing和AW
14、T的联系之一。JComponent类的继承层次如图13.13所示:JComponent类是Container的子类;Container类是Component类的子类;而Component类又是Object类的子类。Swing组件层次13.2.1Swing组件层次 绝大部分的Swing组件位于javax.swing包中,且继承Container类。Swing组件按功能进行划分,可以分为以下几类:顶层容器:JFrame、JApplet、JDialog和JWindow。中间容器:JPanel、JScrollPane、JSplitPane和JToolBar等。特殊容器:在用户界面上具有特殊作用的中间容
15、器,如JInternalFrame、JRootPane、JLayeredPane 和JDestopPane等。基本组件:实现人机交互的组件,如JButton、JComboBox、JList、JMenu和JSlider等。特殊对话框组件:直接产生特殊对话框的组件,如JColorChooser和JFileChooser等。不可编辑信息的显示组件:向用户显示不可编辑信息的组件,如JLable、JProgressBar和JToolTip等。可编辑信息的显示组件:向用户显示能被编辑的格式化信息的组件,如JTextField、JTextArea和JTable等。13.2.1第第3 3节节part容器与布局
16、 容器用来存放其他组件,而容器本身也是一个组件,属于Component的子类。布局管理器用来管理组件在容器中的布局格式,当容器中容纳多个组件时,可以使用布局管理器对这些组件进行排列和分布。容器与布局本节概述13.3.1JFrame顶级容器 JFrame(窗口框架)是可以独立存在的顶级窗口容器,能够包含其他子容器,但不能被其他容器所包含。JFrame类常用的构造方法有以下两种:JFrame():不带参数的构造方法,该方法用于创建一个初始不可见的新窗体。JFrame(String title):带一个字符串参数的构造方法,该方法用于创建一个初始不可见的新窗体,且窗口的标题有字符串参数指定。JFra
17、me类常用的方法及功能如表13-1所示。Jframe顶级容器JPanel中间容器 JPanel(面板)是一种中间容器,中间容器与顶级容器不同,不能独立存在,必须放在其他容器中。JPanel中间容器的意义在于为其他组件提供空间。在使用JPanel时,通常先将其他组件添加到JPanel中间容器中,再将JPanel中间容器添加到JFrame顶级容器中。JPanel类常用的构造方法有以下两种:JPanel():不带参数的构造方法,该方法用于创建一个默认为流布局(FlowLayout)的面板。JPanel(LayoutManager layout):带参数的构造方法,参数是一个布局管理器,用于创建一个指
18、定布局的面板。JPanel类的常用方法即功能如表13-2所示。Jpanel中间容器13.3.213.3.3BorderLayout边界布局 BorderLayout边界布局允许将组件有选择地放置到容器的东部、南部、西部、北部、中部这五个区域,如图13.14所示。BorderLayout边界布局 BorderLayout类的构造方法如下:BorderLayout():不带参数的构造方法,用于创建一个无间距的边界布局管理器对象。BorderLayout(int hgap,int vgap):带参数的构造方法,用于创建一个指定水平、垂直间距的边界布局管理器。BorderLayout类提供了五个静态常
19、量,用于指定边界布局管理中的五个区域:BorderLayout.EASTBorderLayout.EAST指定东部指定东部位置;位置;BorderLayout.WEST指定西部位置;BorderLayout.SOUTH指定南部位置;BorderLayout.NORTH指定北部位置;BorderLayout.CENTER指定中部位置,该位置属于默认位置。BorderLayout边界布局 一个容器使用BorderLayout边界布局后,向容器中添加组件时,需要使用带两个参数的add()方法,将指定组件添加到此容器的给定位置上。基本语法如下:public Component add(Componen
20、t comp,int index);例如:p.add(new JButton(“西部”),BorderLayout.WEST);当使用BorderLayout布局时,需要注意以下两点:当向使用BorderLayout布局的容器中添加组件时,需要指定组件所放置的区域位置,如果没有指定则默认放置到布局的中央位置。通常一个区域位置只能添加一个组件,如果同一个区域中添加多个组件,则后放入的组件将会覆盖先放入的组件。BorderLayout边界布局是窗体(JFrame)的默认布局。当容器采用边界布局时,改变窗体的大小,可以发现东西南北四个位置上的组件长度进行拉伸,而中间位置的组件进行扩展。13.3.31
21、3.3.4FlowLayout流布局 FlowLayout流布局是将容器中的组件按照从中间到两边的顺序,流动地排列和分布,直到上方的空间被占满,才移到下一行,继续从中间到两边流动排列。FlowLayout类的构造方法有如下三个:FlowLayout():不带参数的构造方法,使用默认对齐方式(中间对齐)和默认间距(水平、垂直间距都为5像素)创建一个新的流布局管理器。FlowLayout(int align):带有对齐方式参数的构造方法,用于创建一个指定对齐,默认间距为5像素的流布局管理器。FlowLayout(int align,int hgap,int vgap):带有对齐方式、水平间距、垂直
22、间距参数的构造方法,用于创建一个指定对齐方式、水平间距、垂直间距的流布局管理器。FlowLayout类提供了三个静态常量,用于指明布局的对齐方式,这三个常量分别是:FlowLayout.CENTER为居中对齐,也是默认对齐方式;FlowLayout.LEFT为左对齐方式;FlowLayout.RIGHT为右对齐方式。FlowLayout流布局13.3.5GridLayout网格布局 GridLayout网格布局就像表格一样,将容器按照行和列分割成单元格,每个单元格所占的区域大小都一样。当向GridLayout布局的容器中添加组件时,默认是按照从左到右、从上到下的顺序,依次将组件添加到每个网格中
23、。与FlowLayout不同,放置在GridLayout布局中的各组件的大小由所处区域来决定,即每个组件将自动占满整个区域。GridLayout类提供了两个构造方法如下:GridLayout(int rows,int cols):用于创建一个指定行数和列数的网格布局管理器。GridLayout(int rows,int cols,int hgap,int vgap):用于创建一个指定行数、列数、水平间距和垂直间距的网格布局管理器。GridLayout网格布局13.3.6CardLayout卡片布局 CardLayout卡片布局将加入到容器中的组件看成一叠卡片,每次只能看见最上面的组件。因此,C
24、ardLayout卡片布局是以时间而非空间来管理容器中的组件。CardLayout类提供了两个构造方法如下:CardLayout():不带参数的构造方法,用于创建一个默认间距为0的新卡片布局管理器。CardLayout(int hgap,int vgap):带参数的构造方法,用于创建一个指定水平和垂直间距的卡片布局管理器。CardLayout类中用于控制组件可见 5个常用方法如表13-3所示。CardLayout卡片布局 一个容器使用CardLayout卡片布局后,当向容器中添加组件时,需要使用带两个参数的add()方法,给组件指定一个名称并将其添加到容器中。13.3.7NULL空布局 在实际
25、开发过程中,用户界面比较复杂,而且要求美观,单一使用一种布局管理器很难满足要求。此时,可以采用NULL空布局。空布局是指容器不采用任何布局,而是通过每个组件的绝对定位进行布局。使用空布局的步骤如下:(1)将容器中的布局管理器设置为null(空),即容器中不采用任何布局。例如:/设置面板对象的布局为空 p.setLayout(null);(2)调用setBounds()设置组件的绝对位置坐标及大小,或使用setLocation()方法和setSize()方法分别设置组件的坐标和大小。例如:/设置按钮x轴坐标为30,y轴坐标为60,宽度40,高度25(像素)btn.setBounds(30,60,
展开阅读全文