版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java抽象窗口工具集(AWT)Java组件和容器常用组件类型布局管理器及其使用 AWT- AbstractWindow Toolkit GUI - Graphical User Interface AWT中定义了多种类和接口,用于在Java Application/Applet中进行GUI设计 java程序要显示的GUI组件必须是抽象类Component或MenuComponent的子类 java.awt包提供了基本的java程序GUI设计工具。 Component/MenuComponent Container LayoutManager Java的图形用户界面的最基本组成部分是组件,组件
2、是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。 组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。 容器(Container)实际上是Component的子类,因此容器类对象本身也是一个组件,具有组件的所有性质,另外还具有容纳其它组件和容器的功能。 容器类对象可使用方法add()添加组件 两种主要的容器类型 Window: 可自由停泊的顶级窗口 Panel:可作为容器容纳其它组件,但不能独立存在,必须被添加到其它容器中(如Window 或 Applet) Java组件在容器中的位置和尺寸由布局管理器决定 如要人工控制组件在容器中的大小位
3、置,可取消布局管理器,然后使用Component类的下述成员方法: setLocation() setSize() setBounds() Frame类是抽象类Window的子类 Frame对象显示效果是一个“窗口”,带有标题和尺寸重置角标 默认初始化为不可见的,可使用setVisible(true)方法使之变为可见 默认的布局管理器是BorderLayout 可使用setLayout()方法改变其默认布局管理器Frame类类继承层次继承层次java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-java.awt.W
4、indow | +-java.awt.Frame 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); 提供容纳组件的空间 可以采用和所在容器不同的布局管理器 Panel类的继承层次java.lang.Object | +-java.awt.Component | +-java
5、.awt.Container | +-java.awt.Panelimport 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.setLayout(null); / 取消布局管理器 pan.setSize(100,100); pan.setBackground(Co
6、lor.green); f.add(pan); f.setVisible(true); Ex1 参考P10、12页程序,练习Frame与Panel组件的使用,对使用AWT组件创建图形用户界面机制建立初步认识; 为了使我们生成的图形用户界面具有良好的平台无关性,Java语言中,提供了布局管理器这个工具来管理组件在容器中的布局,而不使用直接设置组件位置和大小的方式。 每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。 FlowLayout BorderLayout GridLayout CardLayout GridBagLayoutCompo
7、nentContainerWindowPanelFrameDialogAppletBorderLayoutFlowLayoutFlowLayout是Panel类的默认布局管理器FlowLayout布局对组件逐行定位,行内从左到右,一行排满后换行默认对齐方式为居中对齐不改变组件的大小,按组件原有尺寸显示组件 可在构造方法中设置不同的组件间距、行距及对齐方式import java.awt.*;public class TestFlowLayout public static void main(String args) Frame f = new Frame(Flow Layout); Butto
8、n 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.setSize(100,100); f.setVisible(true); new FlowLayout(FlowLayout.RIGHT,20,40);右对齐,组件之间水平间距20个像素,竖直间距40个像素;new FlowLayout(F
9、lowLayout.LEFT);左对齐,水平和竖直间距为缺省值:5;new FlowLayout();使用缺省的居中对齐方式,水平和竖直间距为缺省值:5; BorderLayout是Frame类的默认布局管理器 BorderLayout将整个容器的布局划分成东、西、南、北、中五个区域,组件只能被添加到指定的区域 如不指定组件的加入部位,则默认加入到Center区域 每个区域只能加入一个组件,如加入多个,则先前加入的组件会被遗弃 BorderLayout型布局容器尺寸缩放原则 北、南两个区域只能在水平方向缩放(宽度可调整) 东、西两个区域只能在垂直方向缩放(高度可调整) 中部可在两个方向上缩放N
10、orth South West Eest Centerimport java.awt.*;public class TestBorderLayout public static void main(String args) Frame f;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)
11、;f.add(bs, South);f.add(bw, West);f.add(be, East);f.add(bc, Center);f.setSize(200,200);f.setVisible(true);GridLayout型布局管理器将布局划分成规则的矩形网格,每个单元格区域大小相等. 组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下. 在GridLayout构造方法中指定分割的行数和列数.new GridLayout(3,4);import java.awt.*;public class TestGridLayout public static void main(S
12、tring args) Frame f = new Frame(GridLayout Example); Button b1 = new Button(b1); Button b2 = new Button(b2); Button b3 = 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
13、.add(b5); f.add(b6); f.pack(); f.setVisible(true); CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,就好象一叠卡片摞在一起。 注意:在一张卡片中只能显示一个组件,因此可以使用容器嵌套方法显示多个组件。 AWT中最灵活、最复杂的布局管理器,各组件所占空间可以不相同且灵活规定,参见中文参考书;import java.awt.*;public class NestedContainer public static void main(String args) Frame f = new Frame(NestedCon
14、tainer);Button b0 = new Button(display Area);Panel 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.setVisibl
15、e(true); 1.参照P18页的例子练习使用FlowLayout布局管理器,要求在布局管理器的构造方法中尝试设置不同的对齐方式并显式指定组件的水平和竖直间距;2.参照P22页的例子练习使用BorderLayout布局管理器,试验不指明加入位置f.add(bs);以及向同一位置加入多个组件的实际效果;3.参照P24页的例子练习使用GridLayout布局管理器,尝试在声明为2*3个GridLayout网格的Frame中加入多于或少于6个组件时程序的运行表现; Frame Frame是一个顶级窗口。 Frame的缺省布局管理器为BorderLayout。 Panel Panel无法单独显示,必
16、须添加到某个容器中。 Panel的缺省布局管理器为FlowLayout。 当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器。因此,可以利用Panel使得BorderLayout中某个区域显示多个组件。 在程序中安排组件的位置和大小时,应注意: 容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的这些属性。如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖。 如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:setLayout(n
17、ull);可以在任何Java组件上绘图(通常Canvas和Panel组件更适合用于绘图)每 个 J a v a 组 件 都 有 一 个 p u b l i c v o i d paint(Graphics g)方法专门用于绘图目的,每次重画该组件时都自动调用paint方法。每个Java组件都有一个Graphics类型的属性,该属性(对象)真正完成在相应组件上的绘图功能。Graphics类中实现了许多绘图方法:- 绘制边框(非填充图形)- 填充特定区域- 绘制其它形状图形import java.awt.*;public class AWTDrawing private Frame f = new
18、 Frame( Hello Out There!); private 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) AWTDrawi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 聚氯乙烯塑料配制工安全文明知识考核试卷含答案
- 淀粉糖制造工安全素养知识考核试卷含答案
- 烟机电工安全实操能力考核试卷含答案
- 当事人自行协商解决事故协议书
- 2025淘宝天猫宠物品牌增长白皮书
- 工业自动化解耦控制风险防控措施
- 教育变革与未来路径
- 河北省邢台市2024-2025学年八年级上学期11月期中考试数学试卷(含答案)
- 地球的公转及其地理意义(同步训练)-2026年高考地理一轮复习(解析版)
- 2025浙江衢州市柯城区国有企业招聘工作人员16人笔试历年参考题库附带答案详解
- 机关财务划转协议书
- 山东蒙阴垛庄抽水蓄能500kV开关站工程环境影响报告书
- 多囊卵巢综合征健康管理档案建立方案
- 企业内部管理培训资料
- 企业校园招聘的问题与对策研究
- 2025年贵州乐理考试题目及答案
- 儿科护士长述职报告
- 2025年秋季学期国家开放大学《人文英语4》期末机考精准复习题库
- 精神科规培基地工作汇报
- 2025年商业地产行业商业地产数字化运营与商业模式研究报告及未来发展趋势
- 2025年秋季中国南水北调集团青海有限公司招聘42人考试笔试备考试题及答案解析
评论
0/150
提交评论