2022年JAVA教程AWT图形用户界面设计[多图] .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年JAVA教程AWT图形用户界面设计[多图] .pdf》由会员分享,可在线阅读,更多相关《2022年JAVA教程AWT图形用户界面设计[多图] .pdf(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JAVA 教程 第五讲 AWT 图形用户界面设计多图 http:/ 5.1 用 AWT 生成图形化用户界面抽象窗口工具包AWT(Abstract Window Toolkit)是 API 为 Java 程序提供的建立图形用户界面 GUI(Graphics User Interface)工具集,AWT 可用于 Java 的 applet 和 applications 中。它支持图形用户界面编程 的功能包括:用户界面组件;事件处理模型;图形和图像工具,包括形状、颜色和字体类;布局管理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关;数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴。
2、5.1.1 java.awt 包java.awt 包中提供了GUI 设计所使用的类和接口,可从图 5.1 中看到主要类之间的关系。java.awt 包提供了基本的java 程序的 GUI 设计工具。主要包括下述三个概念:组件-Component容器-Container布局管理器-LayoutManager5.1.2 组件和容器Java 的图形用户界面的最基本组成部分是组件(Component),组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。类 java.awt.Component 是
3、许多组件类的父类,Component 类中封装了组件通用的方法和属性,如图形的组件对象、大小、显示位置、前景色和背景色、边界、可见性等,因此许多组件类也就继承了Component 类的成员方法和成员变量,相应的成员方法包括:getComponentAt(int x,int y)getFont()getForeground()getName()getSize()paint(Graphics g)名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 32 页 -repaint()update()setVisible(boolean b)setSize(Dimension d)setName
4、(String name)等容器(Container)也是一个类,实际上是Component 的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器。布局管理器(LayoutManager):每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。为了使我们生成的图形用户界面具有良好的平台无关性,Java 语言中,提供了布局管理器这个工具来管理组件在容器中的布局,而不使用直接设置组件位置和大小的方式。在程序中安排组件的位置和大小时,应该注意以下两点:1容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这
5、种情况下设置组件的这些属性。如果试图使用Java 语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖。2如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:setLayout(null);5.1.3 常用容器容器 java.awt.Container 是 Component 的子类,一个容器可以容纳多个组件,并使它们成为一个整体。容器可以简化图形化界面的设计,以整体结构来布置界面。所有的容器都可以通过 add()方法向容器中添加组件。有三种类型的容器:Window、Panel、ScrollPane,常用的有Pa
6、nel,Frame,Applet。1Frame 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 32 页 -以下是容器的例子:例 51 import java.awt.*;public class MyFrame extends Frame public static void main(String args)MyFrame fr=new MyFrame(Hello Out There!);/构造方法fr.setSize(200,200);/设置 Frame 的大小,缺省为(0,0)fr.setBackground(Color.red);/设置 Frame 的背景,缺省为红色f
7、r.setVisible(true);/设置 Frame 为可见,缺省为不可见 public MyFrame(String str)super(str);/调用父类的构造方法 Photoshop 教程 数据结构五笔 输入法 专题 QQ 病毒专题共享上网专题Google工具和服务专题查看运行结果一般我们要生成一个窗口,通常是用Window 的子类 Frame 来进行实例化,而不是直接用到 Window 类。Frame 的外观就像我们平常在windows 系统下见到的窗口,有标题、边框、菜单、大小等等。每个Frame 的对象实例化以后,都是没有大小和不可见的,因此必须调名师资料总结-精品资料欢迎下
8、载-名师精心整理-第 3 页,共 32 页 -用 setSize()来设置大小,调用setVisible(true)来设置该窗口为可见的。另外,AWT 在实际的运行过程中是调用所在平台的图形系统,因此同样一段AWT 程序在不同的 操作系统 平台下运行所看到的图形系统是不一样的。例如在windows 下运行,则显示的窗口是windows 风格的窗口;而在UNIX 下运行时,则显示的是UNIX 风格的窗口。2.Panel 例 52 import java.awt.*;public class FrameWithPanel extends Frame public FrameWithPanel(St
9、ring str)super(str);public static void main(String args)FrameWithPanel fr=new FrameWithPanel(Frame with Panel);Panel pan=new Panel();fr.setSize(200,200);fr.setBackground(Color.red);/框架 fr 的背景颜色设置为红色fr.setLayout(null);/取消布局管理器pan.setSize(100,100);pan.setBackground(Color.yellow);/设置面板pan 的背景颜色为黄色fr.ad
10、d(pan);/用 add 方法把面板pan添加到框架fr 中fr.setVisible(true);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 32 页 -查看运行结果一般我们要生成一个窗口,通常是用Window 的子类 Frame 来进行实例化,而不是直接用到 Window 类。Frame 的外观就像我们平常在windows 系统下见到的窗口,有标题、边框、菜单、大小等等。每个Frame 的对象实例化以后,都是没有大小和不可见的,因此必须调用 setSize()来设置大小,调用setVisible(true)来设置该窗口为可见的。另外,AWT 在实际的运行过程中是调用所在
11、平台的图形系统,因此同样一段AWT 程序在不同的操作系统平台下运行所看到的图形系统是不一样的。例如在windows 下运行,则显示的窗口是windows 风格的窗口;而在UNIX 下运行时,则显示的是UNIX 风格的窗口。5.1.4 LayoutManager 布局管理器(1)java 为了实现跨平台的特性并且获得动态的布局效果,java 将容器内的所有组件安排给一个 布局管理器 负责管理,如:排列顺序,组件的大小、位置,当窗口移动或调整大小后组件如何变化等功能授权给对应的容器布局管理器来管理,不同的布局管理器使用不同算法和策略,容器可以通过选择不同的布局管理器来决定布局。布局管理器主要包括:
12、FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout 例 53 import java.awt.*;public class ExGui private Frame f;private Button b1;private Button b2;public static void main(String args)ExGui that=new ExGui();that.go();public void go()f=new Frame(GUI example);f.setLayout(new FlowLayout();/设置布局管理
13、器为FlowLayout b1=new Button(Press Me);名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 32 页 -/按钮上显示字符Press Me b2=new Button(Dont Press Me);f.add(b1);f.add(b2);f.pack();/紧凑排列,其作用相当于setSize(),即让窗口尽量小,小到刚刚能够包容住b1、b2 两个按钮f.setVisible(true);查看运行结果1.FlowLayout FlowLayout 是 Panel,Applet 的缺省布局管理器。其组件的放置规律是从上到下、从左到右进行放置,如果容器足够
14、宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果当前行已放置不下该组件,则放置到下一行的最左边。构造方法主要下面几种:FlowLayout(FlowLayout.RIGHT,20,40);/*第一个参数表示组件的对齐方式,指组件在这一行中的位置是居中对齐、居右对齐还是居左对齐,第二个参数是组件之间的横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。*/FlowLayout(FlowLayout.LEFT);/居左对齐,横向间隔和纵向间隔都是缺省值5 个象素FlowLayout();/缺省的对齐方式居中对齐,横向间隔和纵向间隔都是缺省值5 个象素例 54
15、 import java.awt.*;public class myButtons public static void main(String args)Frame f=new Frame();f.setLayout(new FlowLayout();Button button1=new Button(Ok);名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 32 页 -Button button2=new Button(Open);Button button3=new Button(Close);f.add(button1);f.add(button2);f.add(butto
16、n3);f.setSize(300,100);f.setVisible(true);当容器的大小发生变化时,用FlowLayout 管理的组件会发生变化,其变化规律是:组件的大小不变,但是相对位置会发生变化。例如上图中有三个按钮都处于同一行,但是如果把该窗口变窄,窄到刚好能够放下一个按钮,则第二个按钮将折到第二行,第三个按钮将折到第三行。按钮 Open本来在按钮 OK 的右边,但是现在跑到了下面,所以说组件的大小不变,但是相对位置会发生变化。2.BorderLayout BorderLayout 是 Window,Frame 和 Dialog 的缺省布局管理器。BorderLayout 布局管
17、理器把容器分成5 个区域:North,South,East,West 和 Center,每个区域只能放置一个组件。各个区域的位置及大小如下图所示:例 55 import java.awt.*;public class buttonDir public static void main(String args)Frame f=new Frame(BorderLayout);f.setLayout(new BorderLayout();f.add(North,new Button(North);/第一个参数表示把按钮添加到容器的North 区域f.add(South,new Button(Sout
18、h);名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 32 页 -/第一个参数表示把按钮添加到容器的South 区域f.add(East,new Button(East);/第一个参数表示把按钮添加到容器的East 区域f.add(West,new Button(West);/第一个参数表示把按钮添加到容器的West 区域f.add(Center,new Button(Center);/第一个参数表示把按钮添加到容器的Center 区域f.setSize(200,200);f.setVisible(true);查看运行结果在使用BorderLayout 的时候,如果容器的大小发生
19、变化,其变化规律为:组件的相对位置不变,大小发生变化。例如容器变高了,则 North、South 区域不变,West、Center、East区域变高;如果容器变宽了,West、East 区域不变,North、Center、South 区域变宽。不一定所有的区域都有组件,如果四周的区域(West、East、North、South 区域)没有组件,则由 Center 区域去补充,但是如果Center 区域没有组件,则保持空白,其效果如下几幅图所示:North 区域缺少组件名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 32 页 -North 和 Center 区域缺少组件3.Grid
20、Layout 使容器中各个组件呈网格状布局,平均占据容器的空间。例 56 import java.awt.*;public class ButtonGrid public static void main(String args)Frame f=new Frame(GridLayout);f.setLayout(new GridLayout(3,2);/容器平均分成3 行 2 列共 6 格f.add(new Button(1);/添加到第一行的第一格f.add(new Button(2);/添加到第一行的下一格f.add(new Button(3);/添加到第二行的第一格f.add(new B
21、utton(4);/添加到第二行的下一格f.add(new Button(5);/添加到第三行的第一格f.add(new Button(6);/添加到第三行的下一格f.setSize(200,200);f.setVisible(true);查看运行结果5.1.4 LayoutManager 布局管理器(2)4.CardLayout CardLayout 布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,当名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 32 页 -然每层都可以利用Pane
22、l 来实现复杂的用户界面。牌布局管理器(CardLayout)就象一副叠得整整齐齐的扑克牌一样,有54 张牌,但是你只能看见最上面的一张牌,每一张牌就相当于牌布局管理器中的每一层。例 57 import java.awt.*;import java.awt.event.*;/事件处理机制,下一节的内容public class ThreePages implements MousListener CardLayout layout=new CardLayout();/实例化一个牌布局管理器对象Frame f=new Frame(CardLayout);Button page1Button;Lab
23、el page2Label;/Label 是标签,实际上是一行字符串TextArea page3Text;/多行多列的文本区域Button page3Top;Button page3Bottom;public static void main(String args)new ThreePages().go();Public void go()f.setLayout(layout);/设置为牌布局管理器layout f.add(page1Button=new Button(Button page),page1Button);/*第二个参数page1Button 表示的是你对这层牌所取的名字*/p
24、age1Button.addMouseListener(this);/注册监听器f.add(page2Label=new Label(Label page),page2Label);page2Label.addMouseLisener(this);/注册监听器Panel panel=new Panel();panel.setLayout(new BorderLayout();panel.add(page3Text=new TextArea(Composite page),Center);page3Text.addMouseListener(this);panel.add(page3Top=ne
25、w Button(Top button),North);page3Top.addMouseListener(this);panel.add(page3Bottom=new Button(Bottom button),South);page3Bottom.addMouseListener(this);f.add(panel,panel);f.setSize(200,200);f.setVisible(true);名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 32 页 -5容器的嵌套在复杂的图形用户界面设计中,为了使布局更加易于管理,具有简洁的整体风格,一个包含了多个组件的容器本
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多图 2022年JAVA教程AWT图形用户界面设计多图 2022 JAVA 教程 AWT 图形 用户界面 设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内