【教学课件】第16讲图形用户界面㈡.ppt
《【教学课件】第16讲图形用户界面㈡.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第16讲图形用户界面㈡.ppt(33页珍藏版)》请在三一办公上搜索。
1、/,第16讲 图形用户界面,布局管理器事件驱动设计AWT高级组件(一),教学目标,掌握布局管理器的使用理解事件驱动机制掌握事件驱动设计方法掌握AWT高级组件的应用,布局管理器,在前面课程的学习中,经常会发生这样的情况,当将很多的组件放在容器里面的时候,这些组件摆放将很凌乱,有时候甚至看不见部分组件。这是因为没有对这些组件进行布局管理。AWT提供了5个类来对容器页面进行管理,它们均直接继承自类。FlowLayout(流式布局)BorderLayout(边界布局)GridLayout(网格布局)CardLayout(多层/卡片布局)GridBagLayout(动态网格布局),布局管理器-FlowL
2、ayout,FlowLayout是Applet和Panel容器的默认布局管理器,它按照从上到下、从左到右的规则,将添加到容器中的组件依次排列,默认情况下每行组件均居中排列。自动调用组件的getPreferredSize()方法,使用组件的最佳尺寸来显示组件。FlowLayout的构造函数:FlowLayout():居中对齐方式,组件间的水平和竖直间距为缺省值5个象素。FlowLayout(int alignment):可以设定每一行组件的对齐方式 FlowLayout(int alignment,int horz,int vert):可以设定组件间的水平和垂直距离,import java.aw
3、t.*;public class Ex9_9public static void main(String args)Frame frm=new Frame(FlowLayout演示窗口);Button but1,but2,but3,but4,but5;but1=new Button(“按钮一”);but2=new Button(按钮二);but3=new Button(“按钮三”);but4=new Button(按钮四);but5=new Button(按钮五);/设置FlowLayout布局,并且组件左对齐frm.setLayout(new FlowLayout(FlowLayout.LE
4、FT);frm.add(but1);/把五个按钮加入容器中frm.add(but2);frm.add(but3);frm.add(but4);frm.add(but5);frm.setSize(200,100);frm.setLocation(100,100);frm.setVisible(true);,程序分析:程序运行结果如图 所示。当拖动窗口的边界改变窗口大小时,将会发现窗口里面的组件也随着窗口大小而改变位置,组建的布局就像流动式的一样,这就是FlowLayout布局的特点。,FlowLayout示例,布局管理器-BorderLayout,BorderLayout是Windows及其子类
5、Frame的默认布局管理器,它将容器分为5个部分,分别命名为NORTH、SOUTH、WEST、EAST和CENTER。下面是BorderLayout所定义的构造函数:BorderLayout():生成默认的边界布局BorderLayout(int horz,int vert):设定组件间的水平和垂直距离用add()方法往容器中添加组件时必须指明添加的位置,若没有指明放置位置,则表明为默认的“Center”方位。若每个区域或若干个区域没有放置组件,东西南北区域将不会有预留,而中间区域将置空。,add(“North”,new Button(“North”);add(new Button(“West
6、”),BorderLayout.SOUTH);,import java.awt.*;public class Ex9_10public static void main(String args)Frame frm=new Frame(BorderLayout演示窗口);BorderLayout border=new BorderLayout(2,5);Button but1,but2,but3,but4,but5;but1=new Button(按钮东);but2=new Button(按钮南);but3=new Button(按钮西);but4=new Button(按钮北);but5=ne
7、w Button(按钮中);frm.setLayout(border);frm.add(but1,border.EAST);frm.add(but2,border.SOUTH);frm.add(but3,border.WEST);frm.add(but4,border.NORTH);frm.add(but5,border.CENTER);frm.setSize(200,150);frm.setLocation(100,100);frm.setVisible(true);,程序分析:运行程序,将看到如图的图形。如果容器使用BorderLayout类对象作为布局管理器,添加任何一个组件都将以边界作
8、为参照。比如,frm.add(but1,border.EAST);就是在容器frm的最左端添加一个组件but1。,BorderLayout示例,说明:每个区域只能添加一个组件,若添加多个,则只能显示一个组件。如果想在一个区域添加多个组件,则必须先在该区域放一个Panel容器,再将多个组件放在该Panel容器中。,布局管理器-GridLayout,GridLayout是一种很容易理解的布局管理器,它将容器按照指定的行数、列数分成大小均匀的网格,然后将添加到容器里面的组件一一放入。GridLayout的构造函数如下所示:GridLayout():生成一个单列的网格布局GridLayout(int
9、row,int col):生成一个设定行数和列数的网格布局GridLayout(int row,int col,int horz,int vert):可以设置组件之间的水平和垂直间隔,import java.awt.*;public class Ex9_11 public static void main(String args)Frame frm=new Frame(GridLayout演示窗口);GridLayout grid=new GridLayout(3,4);frm.setLayout(grid);for(int i=1;i=12;i+)frm.add(new Button(Int
10、eger.toString(i);frm.setSize(200,150);frm.setVisible(true);,程序分析:由于使用GridLayout布局管理器布局的容器里面添加的组件大小完全相同,所以经常将界面中具有这些规则的组件放入一个新的容器里面,使用GridLayout进行布局,然后再将这个容器添加到界面容器里面。,GridLayout示例,布局管理器-CardLayout,CardLayout是一种将每个组件看作一张卡片,且将所有卡片码成一摞,每一时刻只有一张卡片被显示的布局管理器。有人将其形象地描述为一副落成一叠的扑克牌。第一个添加到容器中的组件位于最低层,最后一个添加到容
11、器中的组件位于最上层。请参考API文档熟悉CardLayout类的构造方法和常用方法。,布局管理器-GridBagLayout,GridBagLayout生成的布局管理器也是和GridLayout一样是使用网格来进行布局管理的。所不同之处在于GridBagLayout可以通过类GridBagConstraints来控制布局容器内各组件的大小,每个组件都使用一个GridBageConstraints对象来给出它的大小和摆放位置,这样就可以按照设计者的意图,改变组件的大小,把它们摆在设计者希望摆放的位置上。这种灵活性是前面几个布局管理器所不具备的。有关GridBageLayout布局管理器使用的详
12、细情况参阅API文档。,容器的嵌套,实际应用中,可能将整个窗口分成很多小块,每一块包含几个组件,这些组件用一个容器来存放,然后再将这些小块容器添加到窗口对象中。AWT就提供了另外一个容器类Panel。可以在一个容器中添加几个Panel容器对象,每个Panel容器对象都可以指定不同的布局方式。,import java.awt.*;public class Ex9_12public static void main(String args)Frame frm=new Frame(容器的嵌套);Label lab=new Label(0.,Label.RIGHT);frm.setLayout(nul
13、l);Panel pnl=new Panel();GridLayout grid=new GridLayout(4,4);pnl.setLayout(grid);String s=7,8,9,/,4,5,6,*,1,2,3,-,0,.,=,+;for(int i=0;i16;i+)pnl.add(new Button(si);lab.setBackground(Color.orange);lab.setBounds(20,30,160,20);pnl.setBounds(20,60,160,80);frm.add(lab);frm.add(pnl);frm.setSize(200,150);f
14、rm.setVisible(true);,程序分析:程序中,将大小相同的12个按钮组件添加在一个Panel对象里面,使用GridLayout进行布局,然后再将这个Panel对象添加到顶层容器Frame对象中。,Panel示例,事件驱动设计,事件驱动设计,在窗口程序设计里,事件(event)的设计是不可或缺的一块。当按下按钮时,也就触发了“按钮被按”的事件,至于计算机要做什么样的反应,则是由程序代码来做判断与决定的。前面已经学会来怎样去绘制一个图形用户界面,但是还没有编写用户交互的代码。下面来认识一下Java的事件处理机制。每发生一个事件,程序都需要作出相应的响应,这称为事件处理。,委派事件模型
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 16 图形 用户界面

链接地址:https://www.31ppt.com/p-5657970.html