Java图形类库
第7章_Java_awt 509修改 - 副本 (2)

17
Frame类(框架)
Frame类是Container类的间接子类。当需要一个窗口时, 可使用Frame或其子类创建一个对象。窗口也是一个容器,
可以向窗口添加组件。窗口默认地被系统添加到显示器屏
幕上,因此,不允许将一个窗口添加到另一个容器中。 Frame是顶级窗口,可以显示标题,重置大小。当Frame 被关闭,将产生WindowEvent事件,Frame无法直接监听 键盘输入事件。
文字、图形、图象… 不能像标准组件一样被系统识别和承认,只起装饰作用。 不能响应用户的动作,不具有交互功能。
8
7.2 组件和容器
Java的图形用户界面的最基本组成部分是组件 (Component),组件是一个可以以图形化的方 式显示在屏幕上并能与用户进行交互的对象,例
如一个按钮,一个标签等。
给用户的技术。
目前Java主要提供了两个处理图形用户界面的类库: java.awt和javax.swing。
2
AWT:抽象窗口工具集(Abstract Windows Toolkit), 其外观取决于具体的平台,可用于Java的applet和 application。 java.awt包中包含了一个完整的类集以支持GUI程序的设 计(重量级构件),比如组件、图形等。
7 7
界面元素
容器是用来组织其他界面成分和元素的单元。
可以形成容器的层次,构筑复杂结构 Window(Frame、Applet、Dialog )
组件是图形用户界面的基本单位,它里面不再包含 其他的成分。
GUI组件是图形用户界面标准化的结果。 GUI组件的作用是完成与用户的交互。
用户自定义成分
Canvas Label TextField TextArea Scrollbar
java图形用户界面设计教程

第4章图形用户界面设计本章要点● Java图形用户界面设计的基本知识●布局管理器的应用● Java常用图形用界面设计组件的应用● Java常用组件事件处理的应用4.1 认识AWT包和Swing包用户界面是计算机用户与软件之间的交互接口。
一个功能完善,使用方便的用户界面可以使软件的操作更加简单,使用户与程序之间的交互更加有效。
因此图形用户界面(graphics user interface,GUI)的设计和开发已经成为软件开发中的一项重要的工作。
Java语言提供的开发图形用户界面(GUI)的功能包括AWT(Abstract Window Toolkit)和Swing两部分。
这两部分功能由Java的两个包来完成-awt和swing。
虽然这两个包都是用于图形用户界面的开发,但是它们不是同时被开发出来了。
awt包是最早被开发出来的。
但是使用awt包开发出来的图形用户界面并不完美,在使用上非常的不灵活。
比如awt包所包含的组件,其外观是固定的,无法改变,这就使得开发出来的界面非常死板。
这种设计是站在操作系统的角度开发图形用户界面,主要考虑的是程序与操作系统的兼容性。
这样做的最大问题就是灵活性差,而且程序在运行时还会消耗很多系统资源。
由于awt包的不足表现,SUN公司于1998年针对它存在的问题,对其进行了扩展,开发出了Swing,即swing包。
但是,SUN公司并没有让swing包完成替代awt包,而是让这两个包共同存在,互取所需。
awt包虽然存在缺点,但是仍然有可用之处,比如在图形用户界面中用到的布局管理器、事件处理等依然采用的是awt包的内容。
Java有两个主要类库分别是Java包和Javax包。
在Java包中存放的是Java语言的核心包。
Javax包是Sun公司提供的一个扩展包,它是对原Java包的一些优化处理。
swing包由于是对awt包的扩展和优化,所以是存放在Javax包下的,而awt包是存放在Java包下的。
Java的GUI设计打造美观直观的用户界面

Java的GUI设计打造美观直观的用户界面Java是一种广泛使用的编程语言,拥有着强大的图形用户界面(GUI)设计能力。
通过使用Java提供的各种GUI库和工具,开发人员可以轻松地创建美观、直观的用户界面。
本文将介绍一些在Java中实现这样的GUI设计的方法和技巧。
一、选择合适的GUI库在Java中,有多个GUI库可供选择,比如Swing、JavaFX等。
选择合适的GUI库是设计美观直观界面的第一步。
Swing是一个成熟的GUI库,提供了丰富的组件和布局管理器,可以满足大部分GUI设计需求。
JavaFX是Java官方推荐的GUI库,它提供了更现代化的界面设计风格和更优秀的性能。
二、使用布局管理器布局管理器是GUI设计中重要的一环,它定义了组件在窗口中的位置和大小。
Java提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout等。
通过合理选择和组合这些布局管理器,可以实现各种复杂的界面布局。
三、使用合适的图标和图片图标和图片在GUI设计中起着很重要的作用,可以通过它们来提升用户界面的美观性和直观性。
Java提供了处理图标和图片的功能和类库,开发人员可以使用这些功能来加载、处理和显示各种图标和图片。
四、使用合适的颜色和字体颜色和字体也是GUI设计中非常重要的元素,可以用来强调界面的重要信息或者创建特定的视觉效果。
Java提供了各种颜色和字体的类库和功能,可以用来选择合适的颜色和字体样式。
五、增加交互性一个好的用户界面应该具有良好的交互性,能够方便用户进行操作。
Java提供了丰富的事件处理机制和监听器,可以实现交互性功能。
开发人员可以通过监听用户的操作,及时响应并更新界面,实现更好的用户体验。
六、进行界面美化除了以上的基本设计原则,开发人员还可以通过一些额外的技巧来进一步美化用户界面。
比如使用渐变色背景、添加阴影效果、使用动画效果等。
这些技巧可以使界面更加生动、有趣,并提升用户的整体体验。
java graphics用法

java graphics用法Java Graphics 是Java 编程语言中用于绘制图形和处理图形操作的一个类库。
它提供了一组类和方法,用于创建图形界面、绘制图形对象、处理用户输入等操作。
以下是一些Java Graphics 的常用用法:1.创建窗口和画布:import javax.swing.JFrame;import java.awt.Canvas;public class MyWindow extends JFrame {public MyWindow() {setTitle("My Window");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(800, 600);setLocationRelativeTo(null);MyCanvas canvas = new MyCanvas();add(canvas);}public static void main(String[] args) {MyWindow window = new MyWindow();window.setVisible(true);}}class MyCanvas extends Canvas { @Override public void paint(Graphics g) {// 在这里进行绘制操作}}2.在画布上绘制基本图形:import java.awt.Graphics;class MyCanvas extends Canvas { @Override public void paint(Graphics g) {// 绘制直线g.drawLine(10, 10, 100, 100);// 绘制矩形g.drawRect(50, 50, 100, 100);// 绘制填充矩形g.fillRect(200, 200, 100, 100);// 绘制椭圆g.drawOval(300, 300, 100, 50);// 绘制填充椭圆g.fillOval(400, 400, 100, 100);}}3.绘制文本:import java.awt.Font;import java.awt.Graphics;class MyCanvas extends Canvas { @Overridepublic void paint(Graphics g) {// 设置字体Font font = new Font("Arial", Font.BOLD, 20);g.setFont(font);// 绘制文本g.drawString("Hello, World!", 50, 50);}}4.绘制图像:import java.awt.Graphics;import java.awt.Image;import javax.swing.ImageIcon;class MyCanvas extends Canvas { @Overridepublic void paint(Graphics g) {// 加载图像文件ImageIcon icon = new ImageIcon("path/to/image.png");Image image = icon.getImage();// 绘制图像g.drawImage(image, 100, 100, null);}}5.处理鼠标事件:import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;class MyCanvas extends Canvas {public MyCanvas() {// 添加鼠标事件监听器addMouseListener(new MouseAdapter() { @Overridepublic void mouseClicked(MouseEvent e) {int x = e.getX();int y = e.getY();System.out.println("Mouse clicked at (" + x + ", " + y + ")");}});} @Overridepublic void paint(Graphics g) {// 绘制图形}}6.实现动画效果:Import java.awt.Graphics;import java.awt.Color;import javax.swing.Timer;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;class MyCanvas extends Canvas {private int x = 0;private int y = 0;public MyCanvas() {// 创建计时器Timer timer = new Timer(100, new ActionListener() { public void actionPerformed(ActionEvent e) {// 更新位置x += 10;y += 10;repaint(); // 重绘画布}});timer.start(); // 启动计时器} @Overridepublic void paint(Graphics g) {g.setColor(Color.RED);g.fillRect(x, y, 50, 50);}}这些示例涵盖了绘制基本图形、文本、图像以及处理鼠标事件和实现动画效果的用法。
Java面向对象程序设计案例教程课件:图形用户界面开发与事件处理

《Java面向对象程序设计案例教程》
7.2 Swing基础
• Swing组件是Java语言提供的第二代GUI设计工 具包,它以AWT为基础,在AWT内容的基础上 新增或改进了一些GUI组件,使得GUI程序功能 更强大,设计更容易、更方便。
• Swing与AWT有以下不同。
• (1) Swing是完全用Java语言编写的,所以称 Swing组件是轻量级组件,没有本地代码,不依 赖操作系统的支持,比AWT构件具有更强的实 用性。Swing在不同的平台表现一致,并且有能 力提供本地窗口系统不支持的其他特性。
《Java面向对象程序设计案例教程》 • Swing的类层次结构如图所示:
《Java面向对象程序设计案例教程》
• 3. 简单的范例 • 一个简单的Swing GUI应用程序。该程序生成一个窗
口, • 窗口中有一个标签,用于显示输出。 • (1) 程序代码: • 1. import java.awt.* ; • 2. import javax.swing.* ; • 3. public class SwingDemo • 4. { • 5. public static void main(String args[]) • 6. { • 7. JFrame fm = new JFrame("第一个Windows程序") ; • 8. JLabel label = new JLabel("这是第一个GUI程序") ;
• 教材例题7-12 利用组合框显示、选取地名。
• 教材例题8.2 ,例题8.3用不同方法生成JFrame窗口
《Java面向对象程序设计案例教程》
• 7.3.2 面板容器JPanel
• 面板JPanel也是Java中常用到的容器之一,面板是一种透明 的容器,既没有标题,也没有边框,就像一块透明的玻璃。 与JFrame不同,它不能作为最外层的容器单独存在,它首 先必须作为一个构件放置到其他容器中,然后再把它作为容 器,把其他构件放到其中。
java论文学习心得图形界面(精品)

java图形化用户界面及Applet学习总结一、javaAppletApplication和Applet是Java程序的两种基本形式。
Applet是特殊的Java程序,它不需要专门的解释器来执行它,相对于Java Appliction 的解释器,如JDK的java.exe,VJ++的jview.exe,Java Applet的解释器就是Internet的浏览器,确切地讲就是兼容Java的Internet浏览器。
Applet的工作原理:1,.class和HTML保存在服务器2,当浏览器向服务器请求下载嵌入了Applet的HTML文件时。
3,下载到客户端后,由浏览器解释HTML中的各种标记并显示在用户屏幕上,当浏览器遇到HTML文件中的一个特殊标记时,表明嵌有Applet程序,浏览器会根据Applet名字和位置把其字节码文件从WWW服务器上下载到本地。
4,利用浏览器本身拥有的Java解释器执行该字节码。
Applet类的使用:Java Applet程序必须有一个主类,其父类是系统的Applet类,正是通过这个类才能完成Applet程序与浏览器的配合存在于java.applet包中,从继承结构上说属于用户图形界面的java.awt包,是系统类java.awt.Panel的子类,由于Applet类的特殊,系统专门为它建立了一个java.applet 包Applet类是Panel的子类Panel类的作用:(1)包容和排列其他的界面元素,如按钮、对话框等;(2)响应它所包容范围之内的事件,或把事件向更高层次传递。
Applet类的作用:Applet在继承上述作用的基础上,还具有一些与浏览器和Applet 生命周期有关的专门方法Applet类的主要方法:1、完成初始化操作的init()方法Applet的字节码文件从WWW服务器下载后,浏览器将自动创建一个Applet 类的实例并调用它从Applet类那里继承来的init()方法。
java培训笔记(详细)版含作业练习-图形界面详解
四. 创建GUI 步骤三:在容器中加入组件
五. 创建GUI 步骤四:创建事件处理器
六. FlowLayout流式布局管理器
最简单的布局管理器,按照组件的添加次序将它们从左到右地放置在容器中。当到达容器边界时,组件将放置在下一行中。
FlowLayout允许以左对齐、居中对齐(默认方式)或右对齐的方式排列组件。特性:
. 不限制它所管理的组件的大小, 而是允许它们有自己的最佳大小。
. 当容器被缩放时,组件的位置可能会变化,但组件的大小不改变。
FlowLayout的构造方法如下:
java.awt包中提供了一个抽象类Component,它是所有除了菜单类组件之外的AWT组件的父类。Container类表示容器,继承
了Component类。容器用来存放别的组件, 有两种类型的容器:Window和Panel。
1. Window和它的子类Frame
Insets getInsets() :返回容器的边框尺寸的大小
Validate():使容器内修改过的组件生效
三. 创建GUI 步骤二:布局管理器
组实例,通过它来自动进行组件的
南北区域的组件保持最佳高度,宽度被水平拉伸至和所在区域一样宽;
位于中区域的组件的宽度和高度都被拉伸至和所在区域一样大小。
. 垂直拉伸,东、西和中区域也拉伸;
水平拉伸,南、北和中区域也拉伸;
. 中区域没有组件,也会分配空间显示容器的背景颜色;
f.setBackground(Color.BLUE);
f.setVisible(true);
}
}
Index:组件存放的位置
constraints:通常是布局管理器的对象
Component getComponent()
Java语言程序设计基础教程课件(第6章)
只能向滚动面板添加一个组件
构造方法
ScrollPane() ScrollPane(int a)
a的取值: 1)SCROLLBARS_ALWAYS 、
2)SCROLLBARS_AS_NEEDED、
3)SCROLLBARS_NEVER
P134【例6-3】使用ScrollPane容器
con.add(String s,Component b) con.add(Component b,String s)
card.show(con,s) card.first(con) st(con) card.previous(con) card.next(con)
Container(容器)的子类,属内层容器
在外层容器内部实现分块布局
默认布局是FlowLayout布局
常用方法同Frame
java.awt.ScrollPane类——滚动面板
P133 【例6-2】使用Panel容器
6.3.3 ScrollPane
java.awt.ScrollPane——滚动面板
但是它的主要功能是容纳其它组件和容器
容器通过add()方法向容器中添加组件。
有三种类型的常用容器:
Frame、 Panel、 ScrollPane。
6.3.1 Frame
Frame类是Container类的间接子类
可以向窗口添加组件
顶层容器,不容许被添加
默认布局是BorderLayout
方法说明
绘制组件
重绘组件 设置组件的大小和位置 设置组件可见性 设置鼠标指向组件时的光 标形状。 将变化后的界面显示出来 更新组件
java图形界面设计含答案
java图形界面设计含答案十一章图形用户界面程序设计入门一.选择题:1. 容器Panel和applet缺省使用的布局编辑策略是 BA、BorderLayoutB、FlowLayoutC、GridLayoutD、CarLayout2. .applet类的直接父类是: BA、Component类B、Container类C、Frame类D、Panel类3. .Swing与AWT的区别不包括 DA、Swing是由纯Java实现的轻量级构件B、Swing没有本地代码C、Swing不依赖操作系统的支持D、Swing支持图形用户界面4. 在编写Java applet程序时,若需要对发生事件作出响应和处理,一般需要在程序的开头写上 B _语句。
A、import java.awt.*;B、import java.applet.*;C、import java.io.*;D、import java.awt.event.*;5. 下面哪个操作是applet可以做的? BA、读取客户端部分系统变量B、读取客户端文件C、在客户端主机上创建新文件D、在客户端装载程序库6. 在Java中,所有类的根类是 AA./doc/302358554.html,ng.Object B./doc/302358554.html,ng.ClassC.java.applet.Applet D.java.awt.Frame7.在JAVA中实现图形用户界面可以使用组建AWT和组件 AA、swingB、SwingC、JOptionPaneD、import8.在JAVA中,一般菜单格式包含有下列类对象 DA、JMenuBarB、JMenuC、JMenuItemD、JMenuBar、JMenu、JMenuItem9.JAVA中提供了多种布局对象类。
其中使用卡片式布局的是 DA、FlowLayoutB、BoederLayoutC、BoxLayoutD、CardLayout10. 下列关于Applet的叙述中,错误的是 AA、Applet是Java类,所以可以由JDK中的解释器java.exe直接解释运行B、Applet应该定义为java.applet.Applet类或javax.swing.JApplet类的子类C、Applet与Application的主要区别在执行方式上D、通过在HTML文件中采用标记可以向Applet传递参数11 与Applet生命周期相关的方法的数量是 AA、4种B、3种C、2种D、5种12下列关于Applet的叙述中,错误的是 AA、Applet是Java类,所以可以由JDK中的解释器java.exe直接解释运行B、Applet应该定义为java.applet.Applet类或javax.swing.JApplet类的子类C、Applet与Application的主要区别在执行方式上D、通过在HTML文件中采用标记可以向Applet传递参数13 java中对Applet设置了严格的安全限制。
Java语言ppt课件(完整版)
封装与访问控制
封装(Encapsulation)的原则:将对象的属性和方法封装在类内部,隐藏实现细节,提供公共接口供 外部访问。
访问控制符(Access Modifiers):使用private、protected、public等访问控制符来控制类成员的可 见性和访问权限。
构造函数(Constructor)与析构函数(Destructor):构造函数用于创建对象并初始化属性,析构函 数用于释放对象占用的资源。
3
2011年,Oracle公司收购Sun公司,成为Java的 新东家
Java语言的历史与发展
2014年,JDK 8发布,引入了 Lambda表达式、Stream API等特性
2021年,JDK 16发布,继续增强 Java语言的功能和性能
Java语言的特点与优势
跨平台性
Java语言编写的程序可以在任何支持Java的 平台上运行,无需修改源代码
1996年,JDK 1.1发 布,增加了对内部类 和反射的支持
1995年,Java语言 正式发布,并推出 JDK 1.0
Java语言的历史与发展
1
1998年,JDK 1.2(也被称为Java 2)发布,增 加了Swing图形用户界面库和Java插件
2
2004年,JDK 5.0发布,引入了泛型、自动装箱/ 拆箱、枚举等特性
JSP页面元素
JSP页面由指令、脚本元素、动作 和内置对象等组成。指令用于控 制JSP页面的整体结构,脚本元素 用于嵌入Java代码,动作用于执 行特定的操作,内置对象则提供 了一些常用的功能。
JSP与Servlet的关系
JSP和Servlet都是Java Web开发 中的重要技术,它们之间有着密 切的联系。JSP页面最终会被转换 成Servlet来处理请求,因此可以 说JSP是Servlet的一种特殊形式 。同时,JSP提供了更加简洁和易 用的页面开发方式,而Servlet则 更适合处理复杂的业务逻辑。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java图形类库概述1994年,全球信息网的迅猛发展为Java提供了良好的契机。
Java的首次公开露面始于网页上一个小小的转动着的咖啡杯。
这个Java applet的出现打破了Web站点沉寂的风格,为原本以静态文字和图片为主的互联网世界带来了新的生机和情趣。
经历了几年的发展,Java已经从最初的Web页面修饰工具发展成如今的Internet/Intranet计算平台。
Java的应用也已经不仅仅局限于客户端,由于针对服务器端应用的Java技术的推出,如Servlet、RMI、企业JavaBeans等等,更多的开发人员开始使用Java开发和部署企业关键任务应用。
Java的广泛应用,除可以归因于其强大的跨平台特性、内在的安全机制及其分布式计算等特性外,Java提供的图形类库也可以说功不可没。
Sun公司在其发布的早期Java版本JDK1.0中就提供了Java图形类库AWT(抽象视窗工具库),用于图形用户界面的开发。
在JDK1.1中AWT又不断地得以改进。
此后,为满足商业化应用对图形用户界面的更高要求,Sun公司与Netscape、IBM公司合作共同开发了新一代Java图形类库JFC(Java基础类)。
本文将介绍Java图形类库的基本概念、结构及编程方法。
我们将从AWT 入手,介绍AWT的组件、布局管理及事件处理机制。
并以此为基础,介绍JFC 的体系结构及其各个组成部分,其中会详细介绍Swing组件的组件模型及其特性。
AWT简介AWT是Java提供的面向对象的图形用户接口框架,可用于生成现代的、鼠标控制的图形应用接口,这并不是Java本身的创新。
但是,用Java设计和实现的GUI无需修改,就可以在各种软硬件平台上运行,这才是Java极具革命意义的地方。
但是,这并不意味着AWT展现给你的是一种全新的GUI风格。
如果你已经习惯了Windows的图形用户界面,或者是Motif的图形用户界面,那么AWT 尊重你的这种习惯。
在AWT中,每一个可视化的GUI组件都有一个本地的对等端(native peer),负责该组件的显示与外观。
所以用AWT构造的Java应用程序,在PC机的Windows系统上运行将保持Windows的GUI风格,而拿到Sun 工作站上运行则将具有Motif图形用户界面的风格。
GUI组件AWT提供了构造图形用户界面所需要的基本GUI组件。
这些GUI组件由java.awt包中相应的类来表示,并通过它进行访问和使用。
java.awt包是java基本包中最大的一个包,其中定义了所有GUI组件类,以及其他用于构造图形用户界面的类,如字体类Font,绘图类Graphics和图像类Image等。
AWT所提供的GUI组件大致分为三类,即容器组件、基本组件和菜单组件。
容器组件所谓容器组件,是指能够包含其他组件的组件。
一个设计良好的用户界面应该是高度结构化的,而不是一些简单GUI组件的无序组合。
而容器组件恰恰有助于实现GUI的结构化。
AWT中提供的容器组件有Panel、Window、Frame、Dialog。
其中Panel没有具体的图形表示,但它却是实现GUI结构化的一个至关重要的组件。
我们通常用它来实现GUI基本组件的组合;Frame则定义了一个包含标题条、系统菜单栏、最大化/最小化按钮及可选菜单条的完整的窗口;而Dialog主要用于实现应用程序与用户的信息交流。
上述的容器组件虽然功能各异,但是它们都有一个共同的特点:即能够包含其他GUI组件。
然而容器组件是如何管理所包含的GUI组件,如何确定这些组件的位置和大小的呢?这就涉及到AWT中一个很重要的概念—布局管理。
采用布局管理与Java语言的跨平台特性密切相关。
因为不同平台显示文字、图形的方式并不相同,如果显式地指定一个组件的绝对位置和大小,那么它在某一个平台上能够正常显示,而在其他平台上的显示效果却可能不尽人意。
因此,AWT中定义了布局管理器接口LayoutManager,LayoutManager的实现类可以自动根据运行平台的不同来布置所有可视化GUI组件。
容器组件既可以使用缺省的布局管理器,也可以通过setLayout方法来设置所需要的布局管理器。
一旦确定了布局管理方式,容器组件就可以使用相应的add方法向其中加入其他GUI组件。
布局管理器AWT提供了以下5种标准布局管理方式,即5个LayoutManager的实现类:FlowLayout:流式布局管理是AWT中最简单的一种布局管理方法。
顾名思义,它是以一种流程式的方式,自左向右、自上而下地布置容器中所包含的GUI 组件。
开发人员只需调用setLayout方法将容器组件的布局管理方式设置为流式布局管理,然后调用add(Component comp)方法将组件加入到容器中即可。
Panel 缺省的布局管理方式就是FlowLayout。
BorderLayout:BorderLayout用类似于地理区域的方式管理GUI组件的布局,你可以向5个区域中加入相应的GUI组件。
BorderLayout是Frame和Dialog的缺省布局管理方式。
与FlowLayout不同的是,如果使用BorderLayout进行布局管理,那么在加入GUI组件的时候,就需要明确指出加入的位置,例如:setLayout( new BorderLayout() );add("Center", new Button("Button") );CardLayout:CardLayout提供了一种基于卡片式的布局管理方式。
在AWT 应用中,可以将某一GUI组件加入到一个指定名字的卡片中,例如:setLayout( new CardLayout() );add("CardName", new Button("Card 1") );这里,卡片名字是唯一的,可用于引用相应的卡片。
一般而言,加入到卡片中的GUI组件通常是Panel对象,因为Panel对象又可以包含其他GUI组件,并按照其自身的布局管理方式来管理它们。
为便于在一组卡片之间来回切换,CardLayout定义了一系列方法,如first、next、previous、show等。
GridLayout:GridLayout提供了一种基于栅格的布局管理方式。
栅格的行数和列数可以在创建GridLayout对象时指定。
采用GridLayout进行布局管理,容器中的每个组件将占据大小完全相同的一个栅格。
向栅格中布置GUI组件有两种方法:一种是使用缺省的布置顺序,即采用add(Component comp)方法按照从左向右、从上到下的顺序加入GUI组件;二是采用add(Component comp,int index)将组件加入到指定的栅格中。
GridBagLayout:GridBagLayout是建立在GridLayout之上的一种布局管理方式。
较GirdLayout而言,GridBagLayout更复杂,也更灵活,容器中的每一个组件可以占据一个或多个连续的栅格。
GridBagLayout布局管理器是借助于类GridBagConstraints来限制每个组件所占据的横向和纵向栅格的个数。
基本GUI组件基本GUI组件是构成用户界面的基本元素。
这些GUI组件不能独立存在和显示,而必须先将之加到容器组件中。
在java.awt包中定义的基本GUI组件类有:Button、Canvas、Checkbox、Choice、Label、List、ScrollBar、TextField和TextArea。
所有的基本组件类都是Component类的子类。
Component类中定义了所有GUI组件共有的属性和方法。
作为Component的子类,所有基本GUI组件类均可以继承Component类中定义的属性和方法。
除此之外,每一个组件类中又都有针对本身应用特点而定义的属性和方法。
菜单组件Java中的菜单组件是一类特殊的组件。
同其他GUI组件不同,菜单组件并不是Component类的子类,而是从MenuComponent类中派生出来的。
这也就是说菜单组件是不能通过add方法加入到容器组件中去的。
在AWT中,菜单系统是通过另外一种联系机制加入到窗口中的,即Frame类的setMenuBar(MenuBar mbar)方法。
AWT中定义的菜单组件有四类:MenuBar, Menu, MenuItem和CheckboxMenuItem。
MenuBar是窗口的菜单条,其中定义了add方法,用于向菜单条中加入子菜单Menu和菜单项MenuItem;Menu是子菜单,它可以通过add方法来组合MenuItem和其他子菜单;而MenuItem则是最基本的菜单项,MenuItem还有一个特殊的实例CheckboxMenuItem,主要用来表示菜单项的开关状态。
通过AWT定义的这四个菜单组件,我们可以创建一个完整的菜单系统。
AWT事件处理前面简要介绍了AWT提供的GUI组件。
那么,是不是有了GUI组件就可以构造一个应用系统的用户界面呢?答案是否定的,因为这样构造出来的图形用户界面是无法与用户交互的,一个完整的用户界面系统还必须具备事件处理能力。
从JDK1.0到JDK1.1,AWT的事件处理机制有了很大的变化。
在JDK1.1中,AWT采用了一种新的事件处理模型—代理事件模型。
较JDK1.0中的事件处理模型而言,新的事件处理模型不仅更为灵活,而且完全支持JavaBeans。
AWT的代理事件模型中有如下三个角色:事件源:即产生或发出事件的对象。
例如,用户点击了图形用户界面上的一个按钮,按钮就会产生一个鼠标按下的事件。
此时,按钮就是事件源。
事件:AWT中定义了各种事件类,如鼠标事件(MouseEvent)和窗口事件(WindowEvent)等。
事件监听器:事件监听器用于监听某类事件的发生。
它通过调用事件源中定义的addxxxListener方法(xxx代表某类事件),来登记所需监听的事件。
当该事件源发出此类事件时,事件监听器就会得到通知。
在AWT中,事件监听器是java.awt.event包中的一类接口,其中定义了被监听的事件发生时,系统要调用的方法。
新一代Java图形类库—JFCAWT提供了构造applet和application图形用户界面的基本类库。
通过采用“本地对等端”(native peer)模型,即AWT中的每一个可视化GUI组件都有一个相应的本地对等端来负责它的显示与外观,从而解决了跨各种软硬件平台显示GUI的问题,为Java最初的成功奠定了基础。
AWT的“本地对等端”模型,满足了当时开发人员希望Java在不同平台上运行时,具有本地显示风格的要求,但同时也带来了一些问题:●“本地对等端”模型给GUI的绘画和事件处理带来了很多限制,使得某些方面的GUI编程很难实现:如采用透明背景色、改变GUI组件外形为其他形状等。