《Java程序设计及应用开发教程 教学课件 ppt 作者 虞益诚 主编第9章高级GUI设计与多媒体技术》由会员分享,可在线阅读,更多相关《Java程序设计及应用开发教程 教学课件 ppt 作者 虞益诚 主编第9章高级GUI设计与多媒体技术(40页珍藏版)》请在金锄头文库上搜索。
1、2019/8/6,1,Java程序设计及应用开发教程,主编: 虞益诚,E-mail:,2019/8/6,第9章 高级GUI设计与多媒体技术,2,第9章 高级GUI设计与多媒体技术,9.1 布局设计 9.2 菜单组件 9.3 Swing组件 9.4 多媒体技术 9.5 本章小结 交互式图形用户界面离不开菜单与布局设计,Swing组件和多媒体技术应用使得高级图形用户界面设计更显生机。本章主要讲述了布局设计的六种形式及布局管理器组合使用、菜单组件设计、组件常用方法、中间容器、Swing组件与多媒体程序设计基础。,2019/8/6,第9章 高级GUI设计与多媒体技术,3,9.1 布局设计,9.1.1
2、布局概述 Java中容器仅仅记录了其所包含的组件,而布局管理器则用于管理组件在容器中的布局,负责管理容器中的各个组件的排列顺序、位置、组件大小等,当窗口移动或改变大小时,就相应改变组件的大小及位置。 java.awt包定义了FlowLayout、BorderLayout、CardLayout、GridLayout和GridBagLayout 5种布局(java.lang.Object的子类),分别对应一种布局策略。 java.swing包中定义了BoxLayout、ScrollPanelLayout、ViewportLayout、OverLayout4种布局。不同的布局管理器采用不同的布局策略
3、来放置组件。 本章介绍java.awt包中的5种布局类和java.swing.border包中的BoxLayout类。 9.1.2 FlowLayout布局 FlowLayout:流式布局管理器,它是将容器的组件按照加入的先后顺序从左到右依次排列,一行排满后就转到下一行继续从左至右顺序排列; 每行中的组件都居中排列,组件间默认的水平和垂直间隙是5个像素。它是Jpanel与Applet默认的布局管理策略。 FlowLayout类的主要方法如表9-1所示。 例9-1采用FlowLayout布局在窗口中加入左、中、右3个按钮。 。,2019/8/6,第9章 高级GUI设计与多媒体技术,4,9.1.3
4、 BorderLayout布局,9.1.3 BorderLayout布局 BorderLayout称为边界布局管理器,该布局是一种简单的布局策略,是Window、Frame、Dialog 、JFrame、JDialog的默认布局策略。 BorderLayout类的方法如表9-2所示。 BorderLayout布局管理器将窗口分为北(North)、东(East)、南(South)、西(West)、中(Center)五个区域,中间的区域最大。 【例9-2】基于BorderLayout设置5个按钮的布局,且当点击按钮时,该按钮消失。再度点击某按钮时,当前对象消失,恢复前次消失的按钮。,2019/8/
5、6,第9章 高级GUI设计与多媒体技术,5,9.1.4 CardLayout布局,9.1.4 CardLayout布局 CardLayout称为卡式布局管理器,该布局可实现多个组件在同一容器区域内重叠放置,交替显示。CardLayout类的主要方法如表9-3所示。 【例9-3】采用CardLayout布局策略在窗口中加入3个带图片显示的按钮。 9.1.5 GridLayout布局 GridLayout称为网格布局管理器,是使用较多的布局管理器,它在一个二维的网格中布置组件,其基本布局策略是把容器划分成若干行若干列的网格区域,每个网格的大小相等,组件就位于这些划分出来的小格中,一个网格可以放置一
6、个组件。CardLayout类的方法如表9-4所示。 使用GridLayou布局管理器时,需要定义行数和列数。 使用GridLayout布局管理器的一般步骤如下: 例9-4采用GridLay布局策略创建含有6个按钮的窗口。,2019/8/6,第9章 高级GUI设计与多媒体技术,6,9.1.6 GridBagLayout布局,9.1.6 GridBagLayout布局 GridBagLayout :网格包布局管理器,它采用网格的形式来放置组件,组件的位置和大小由GridBagConstraints类的对象实例决定。 GridBagLayout 布局允许指定的组件跨多行或多列,且行和列不要求同高或
7、同宽,同时允许组件部分重叠。 GridBagLayout类的方法如表9-5所示, GridBagConstraints的常见属性如表9-6所示。 例9-5采用GridBagLay布局策略创建5个命令按钮按需分为两行的窗口。 9.1.7 BoxLayout 布局 BoxLayout 称为盒式布局管理器,该布局类用以创建一个盒式布局对象,BoxLayout在java.swing.border包中。 BoxLayout的容器将组件排列在一行或一列,这取决于创建盒式布局对象时,是指定为行排列还是列排列。 使用行(列)型盒式布局的容器将组件排列成一行(列),组件加入的先后顺序为从左(上)向右(下)排列,
8、容器两端是剩余的空间。 与FlowLayou布局不同的是盒式布局的容器只有一行(列),即使组件再多也只会被改变大小,紧缩在这一行(列)中而不会延伸到下一行(列)。 BoxLayout类的方法如表9-7所示。 例9-6采用BoxLayout布局策略在窗口中按水平和垂直排列方式添加按钮数组。,2019/8/6,第9章 高级GUI设计与多媒体技术,7,9.1.8 布局管理器组合使用,9.1.8 布局管理器组合使用 布局管理器的 组合使用。在此仅枚举一例以资理解。 【例9-7】创建一个盒型_流型布局组合应用程序。 import javax.swing.*; import java.awt.*;impo
9、rt javax.swing.border.*; class BoxLay00 extends JFrame Box boxS,boxA,boxB; BoxLay00() super (“盒型_流型布局演示程序“); boxA=Box.createVerticalBox(); /构建列型盒型布局Box组件 boxA.add(new JLabel(“输入您的姓名:“); boxA.add(Box.createVerticalStrut(10); /构建水平Struct类型间距支撑 boxA.add(new JLabel(“输入您的工号:“); boxA.add(Box.createVertica
10、lStrut(10); boxA.add(new JLabel(“输入您的单位:”); boxA.add(Box.createVerticalStrut(10); boxA.add(new JLabel(“输入电话号码:“); boxB=Box.createVerticalBox(); /构建列型盒型布局Box组件 boxB.add(new JTextField(20); boxB.add(Box.createVerticalStrut(10); boxB.add(new JTextField(20); boxB.add(Box.createVerticalStrut(10); boxB.ad
11、d(new JTextField(20); boxB.add(Box.createVerticalStrut(10); boxB.add(new JTextField(20); boxS=Box.createHorizontalBox(); /构建行型盒型布局Box组件,2019/8/6,第9章 高级GUI设计与多媒体技术,8,【例9-7】,boxS.add(boxA);boxS.add(Box.createHorizontalStrut(8);/构建垂直Struct类型间距 boxS.add(boxB); Container con=getContentPane(); con.setLayo
12、ut(new FlowLayout(); /构建流型布局Box组件 con.add(boxS); con.validate(); con.setBackground(Color.pink); /设置背景颜色 setBounds(100,100,350,170); /设置框袈大小与位置 setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public class BoxLay public static void main(String args) new BoxLay00(); 程序运行结果如图9-7所示。,201
13、9/8/6,第9章 高级GUI设计与多媒体技术,9,在Java中,一般菜单格式包含菜单栏(MenuBar,Swing 中为JMenuBar)类、菜单(Menu,Swing 中为JMenu)类、菜单项(MenuItem,Swing 中为JMenuItem)类。 菜单放在菜单栏里,菜单项放在菜单里。菜单栏、菜单、菜单项的构造方法与一般方法如表9-8与表9-9所示。 9.2.1 菜单栏 菜单栏是用来管理菜单的,只能被添加到Frame对象中,作为整个菜单树的根基,不参与交互操作。 JComponent类的子类JMenuBar是负责创建菜单栏(AWT中由MenuBar负责创建,本教材主要讲述Swing组
14、件下菜单的创建过程) 菜单栏由JmenuBar派生。菜单栏的方法如表如表9-8与表9-9所示。 9.2.2 菜单 菜单是用来存放与整合菜单项的组件。 菜单栏JComponent类的子类JMenu类是负责创建菜单的,即菜单是由Jmenu派生(AWT中由Menu负责创建)。 它的实例就是一个菜单。菜单可以是单层的菜单,也可多层结构的。 菜单的构造方法与一般方法如9-8与表9-9所示。,9.2 菜单组件,2019/8/6,第9章 高级GUI设计与多媒体技术,10,菜单项是菜单系统的基本组件,是用户最终选择的项目。 JMenuItem负责创建菜单项(AWT中由MenuItem负责创建) JMenult
15、em的一个实例就是一个菜单项,菜单项放在菜单里。 通常,菜单项是JMenultem或Menultem。 此外尚可以使用带复选框和单选按钮的菜单项: 即:JCheckBoxMenuItem或CheckBoxMenuItem和JRadioButtonMenuItem或RadioButtonMenuItem. 例如,创建单选按钮菜单项“JRadio”,并将其添加到“Sch”菜单中。 ButtonGroup group=new ButtonGroup(); JRadioButtonMenuItem SchItem = new JRadioButtonMenuItem(“JRadio“); group.
16、add(SchItem);SCHMenu.add(SchItem); 9.2.4 弹出式菜单 弹出式菜单(JpopupMenu或PopupMenu)是一种特殊的菜单,是可以四处浮动显示,是依附于某个容器或组件,单击鼠标右键时显示,可用add()方法加入组件 例如,创建弹出式菜单:popup, 且新建弹出式菜单中的“new“菜单项和监听器 JPopupMenu popup = new JPopupMenu(); JMenuItem newItemPop = new JMenuItem(“工资管理程序弹出式菜单“); popup.add(newItemPop 9.2.5 菜单创建步骤,9.2.3 菜单项,2019/8/6,第9章 高级GUI设计与多媒体技术,11,Swing API被封装成许多包,这些包组成如表9-10所示,它们可以相应地支持各种功能,例如组件、用户界面外观、事件等等,Swi