JAVA程序员定制课程c10.ppt

上传人:s****8 文档编号:69171513 上传时间:2022-12-31 格式:PPT 页数:33 大小:195.50KB
返回 下载 相关 举报
JAVA程序员定制课程c10.ppt_第1页
第1页 / 共33页
JAVA程序员定制课程c10.ppt_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《JAVA程序员定制课程c10.ppt》由会员分享,可在线阅读,更多相关《JAVA程序员定制课程c10.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第十章GUIGUI应用程序设计应用程序设计本章内容Java抽象窗口工具集(AWT)Java组件和容器常用组件类型布局管理器及其使用2抽象窗口工具集(AWT)AWT-AbstractWindow Toolkit GUI-Graphical User InterfaceAWT中定义了多种类和接口,用于在Java Application/Applet中进行GUI设计java程序要显示的GUI组件必须是抽象类Component或MenuComponent的子类3java.awt 包java.awt包提供了基本的java程序GUI设计工具。Component/MenuComponentContainer

2、LayoutManager4组件(Component)Java的图形用户界面的最基本组成部分是组件,组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。5容 器(Container)容器(Container)实际上是Component的子类,因此容器类对象本身也是一个组件,具有组件的所有性质,另外还具有容纳其它组件和容器的功能。容器类对象可使用方法add()添加组件两种主要的容器类型Window:可自由停泊的顶级窗口Panel:可作为容器容纳其它组件,但不能独立存在,必须被添加到其它容器中

3、(如Window 或 Applet)6组件定位vJava组件在容器中的位置和尺寸由布局管理器决定v如要人工控制组件在容器中的大小位置,可取消布局管理器,然后使用Component类的下述成员方法:setLocation()setSize()setBounds()7Frame类Frame类是抽象类Window的子类Frame对象显示效果是一个“窗口”,带有标题和尺寸重置角标默认初始化为不可见的,可使用setVisible(true)方法使之变为可见默认的布局管理器是BorderLayout可使用setLayout()方法改变其默认布局管理器8Frame类类继承层次继承层次java.lang.Ob

4、ject|+-java.awt.Component|+-java.awt.Container|+-java.awt.Window|+-java.awt.Frame9Frame 应用举例 import java.awt.*;public class TestFrame public static void main(String args)Frame f=new Frame(My First Test);f.setSize(170,100);f.setBackground(Color.blue);f.setVisible(true);10Panel类 提供容纳组件的空间 可以采用和所在容器不同的

5、布局管理器 Panel类的继承层次java.lang.Object|+-java.awt.Component|+-java.awt.Container|+-java.awt.Panel11FrameWithPanel应用举例import java.awt.*;public class TestFrameWithPanel public static void main(String args)Frame f=new Frame(MyTest Frame);Panel pan=new Panel();f.setSize(200,200);f.setBackground(Color.blue);f

6、.setLayout(null);/取消布局管理器 pan.setSize(100,100);pan.setBackground(Color.green);f.add(pan);f.setVisible(true);12Ex1 练习M10-10、12页Frame与Panel组件的使用,对使用AWT组件创建图形用户界面机制建立初步认识;13布局管理器为了使我们生成的图形用户界面具有良好的平台无关性,Java语言中,提供了布局管理器这个工具来管理组件在容器中的布局,而不使用直接设置组件位置和大小的方式。每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局

7、管理器。14容器布局(Container Layouts)FlowLayout BorderLayout GridLayout CardLayout GridBagLayout15默认布局管理器ComponentContainerWindowPanelFrameDialogAppletBorderLayoutFlowLayout16FlowLayout布局管理器FlowLayout是Panel类的默认布局管理器FlowLayout布局对组件逐行定位,行内从左到右,一行排满后换行默认对齐方式为居中对齐不改变组件的大小,按组件原有尺寸显示组件 可在构造方法中设置不同的组件间距、行距及对齐方式17F

8、lowLayout 举例import java.awt.*;public class TestFlowLayout public static void main(String args)Frame f=new Frame(Flow Layout);Button button1=new Button(Ok);Button button2=new Button(Open);Button button3=new Button(Close);f.setLayout(new FlowLayout();f.add(button1);f.add(button2);f.add(button3);f.setS

9、ize(100,100);f.setVisible(true);18FlowLayout 的构造方法new FlowLayout(FlowLayout.RIGHT,20,40);右对齐,组件之间水平间距20个像素,竖直间距40个像素;new FlowLayout(FlowLayout.LEFT);左对齐,水平和竖直间距为缺省值:5;new FlowLayout();使用缺省的居中对齐方式,水平和竖直间距为缺省值:5;19BorderLayout 布局管理器BorderLayout是Frame类的默认布局管理器BorderLayout将整个容器的布局划分成东、西、南、北、中五个区域,组件只能被添

10、加到指定的区域如不指定组件的加入部位,则默认加入到Center区域每个区域只能加入一个组件,如加入多个,则先前加入的组件会被遗弃20BorderLayout 布局管理器BorderLayout型布局容器尺寸缩放原则北、南两个区域只能在水平方向缩放(宽度可调整)东、西两个区域只能在垂直方向缩放(高度可调整)中部可在两个方向上缩放North South West Eest Center21BorderLayout举例import java.awt.*;public class TestBorderLayout public static void main(String args)Frame f;

11、f=new Frame(Border Layout);Button bn=new Button(BN);Button bs=new Button(BS);Button bw=new Button(BW);Button be=new Button(BE);Button bc=new Button(BC);f.add(bn,North);f.add(bs,South);f.add(bw,West);f.add(be,East);f.add(bc,Center);f.setSize(200,200);f.setVisible(true);22GridLayout 布局管理器GridLayout型布局

12、管理器将布局划分成规则的矩形网格,每个单元格区域大小相等.组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下.在GridLayout构造方法中指定分割的行数和列数.new GridLayout(3,4);23GridLayout举例import java.awt.*;public class TestGridLayout public static void main(String args)Frame f=new Frame(GridLayout Example);Button b1=new Button(b1);Button b2=new Button(b2);Button b

13、3=new Button(b3);Button b4=new Button(b4);Button b5=new Button(b5);Button b6=new Button(b6);f.setLayout(new GridLayout(3,2);f.add(b1);f.add(b2);f.add(b3);f.add(b4);f.add(b5);f.add(b6);f.pack();f.setVisible(true);24*CardLayout 布局管理器CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,就好象一叠卡片摞在一起。注意:在一张卡片中只能显示一个组

14、件,因此可以使用容器嵌套方法显示多个组件。/非考试内容,但实际项目开发有时会用。25*GridBagLayout 布局管理器AWT中最灵活、最复杂的布局管理器,各组件所占空间可以不相同且灵活规定,参见中文参考书;非考试内容,很少用,实际项目开发做界面时可能会用到。26容器的嵌套使用举例import java.awt.*;public class NestedContainer public static void main(String args)Frame f=new Frame(NestedContainer);Button b0=new Button(display Area);Pane

15、l p=new Panel();p.setLayout(new GridLayout(2,2);Button b1=new Button(1);Button b2=new Button(2);Button b3=new Button(3);Button b4=new Button(4);p.add(b1);p.add(b2);p.add(b3);p.add(b4);f.add(b0,North);f.add(p,Center);f.pack();f.setVisible(true);27Ex2 布局管理器1.参照M10-18页的例子练习使用FlowLayout布局管理器,要求在布局管理器的构造

16、方法中尝试设置不同的对齐方式并显式指定组件的水平和竖直间距;2.参照M10-22页的例子练习使用BorderLayout布局管理器,试验不指明加入位置f.add(bs);以及向同一位置加入多个组件的实际效果;3.参照M10-24页的例子练习使用GridLayout布局管理器,尝试在声明为2*3个GridLayout网格的Frame中加入多于或少于6个组件时程序的运行表现;28布局管理器总结(1)FrameFrame是一个顶级窗口。Frame的缺省布局管理器为BorderLayout。PanelPanel无法单独显示,必须添加到某个容器中。Panel的缺省布局管理器为FlowLayout。当把P

17、anel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器。因此,可以利用Panel使得BorderLayout中某个区域显示多个组件。29布局管理器总结(2)在程序中安排组件的位置和大小时,应注意:容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的这些属性。如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖。如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:setLayout(null);30AWT 绘图可以在任何Java组件上绘图(通常C

18、anvas和Panel组件更适合用于绘图)每 个 Java组 件 都 有 一 个 public void paint(Graphics g)方法专门用于绘图目的,每次重画该组件时都自动调用paint方法。每个Java组件都有一个Graphics类型的属性,该属性(对象)真正完成在相应组件上的绘图功能。Graphics类中实现了许多绘图方法:-绘制边框(非填充图形)-填充特定区域-绘制其它形状图形31AWT 绘图举例import java.awt.*;public class AWTDrawing private Frame f=new Frame(Hello Out There!);priva

19、te Panel p=new Panel();public void launchFrame()f.add(p);f.setSize(170,170);f.setBackground(Color.blue);f.setVisible(true);p.setForeground(Color.red);Graphics g=p.getGraphics();g.drawArc(30,40,50,60,70,80);g.fillArc(30,40,50,60,70,80);public static void main(String args)AWTDrawing guiWindow=new AWTD

20、rawing();guiWindow.launchFrame();32AWT 绘图举例import java.awt.*;class SubPanel extends Panelpublic void paint(Graphics g)g.drawString(this is a drawing test!,20,20);g.drawLine(30,60,100,120);g.draw3DRect(60,50,70,30,false);public class AWTDrawing2 private Frame f=new Frame(Hello Out There!);private SubPanel p=new SubPanel();public void launchFrame()f.add(p);f.setSize(170,170);f.setBackground(new Color(89,145,145);f.setVisible(true);public static void main(String args)AWTDrawing2 guiWindow=new AWTDrawing2();guiWindow.launchFrame();33

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁