第七章图形编程 经过前面的学习,我们已经基本上掌握了Java程序设计 接下来要学习如何创建和管理窗口、管理字体、输出文本和 使用图形等内容
第七章 图形编程 经过前面的学习,我们已经基本上掌握了Java 程序设计, 接下来要学习如何创建和管理窗口、管理字体、输出文本和 使用图形等内容
本章要点: Swing与AWT的关系及图形程序设计的层次结构 ■掌握框架、面板和的使用 ■理解 Color、Font和 Fontmetrics类 ■掌握在 Graphics类中绘制图形和显示字符 ■掌握图形的加载和显示
本章要点: ◼Swing与AWT的关系及图形程序设计的层次结构 ◼掌握框架、面板和的使用 ◼理解Color、Font和FontMetrics类 ◼掌握在Graphics类中绘制图形和显示字符 ◼掌握图形的加载和显示
71 Swing概述 Swng是 Sun Microsystems建立的下一代GU工具包。它 允许使用Java语言进行企业级开发,程序员可以使用 Swing建立包含许多功能强大的组件的大型Java应用程序。 此外,还可以很容易地扩充和修改这些组件以控制它们 的外观和行为。 Swing是Java产品(J"C,Java Foundation classes)的一部分,大多数 Swing组件是直 接用Java代码绘制的,更少依赖目标机器上的平台,更 少使用本地GUI资源。因此, Swing组件称为轻型组件。 Jaa2SDK1.5版本中包括许多已更新的 Swing类和一些 新的特性
Swing是Sun Microsystems建立的下一代GUI工具包。它 允许使用Java语言进行企业级开发,程序员可以使用 Swing建立包含许多功能强大的组件的大型Java应用程序。 此外,还可以很容易地扩充和修改这些组件以控制它们 的 外 观 和 行 为 。 Swing 是 Java 产 品 ( JFC , Java Foundation classes)的一部分,大多数Swing组件是直 接用Java代码绘制的,更少依赖目标机器上的平台,更 少使用本地GUI资源。因此,Swing组件称为轻型组件。 Java 2 SDK1.5版本中包括许多已更新的Swing类和一些 新的特性。 7.1 Swing概述
71 Swing概述— Swing与AWT之间的关系 Swing不是AWT的替代, Swing实际上是建立在核心AWT 库之上的。 Swing的产生主要原因就是AWT不能满足图形 化用户界面发展的需要。此外,AWT基于同位体的体系 结构也成为其致命的弱点。而 Swing不包含任何平台专用 代码,不依赖操作系统的支持,其组件是用纯Java实现 的轻量级( light-weight)组件,没有本地代码。这是它 与AWT组件的最大区别。由于AWT组件通过与具体平台 相关的对等类(Per)实现,因此 Swing比AWT组件具有 更强的实用性。 Swing在不同的平台上表现一致,并且有 能力提供本地窗口系统不支持的其它特性
Swing不是AWT的替代,Swing实际上是建立在核心AWT 库之上的。Swing的产生主要原因就是AWT不能满足图形 化用户界面发展的需要。此外,AWT基于同位体的体系 结构也成为其致命的弱点。而Swing不包含任何平台专用 代码,不依赖操作系统的支持,其组件是用纯Java实现 的轻量级( light-weight)组件,没有本地代码。这是它 与AWT组件的最大区别。由于AWT组件通过与具体平台 相关的对等类(Peer)实现,因此Swing比AWT组件具有 更强的实用性。Swing在不同的平台上表现一致,并且有 能力提供本地窗口系统不支持的其它特性。 7.1 Swing概述—Swing与AWT之间的关系
71 Swing概述— Swing与AWT之间的关系 ■ Swing特性 绝大多数 Swing组件是轻型组件,只有少数几个顶层容器 不是轻型的。它们使用简化的图形基本元素在屏幕上绘 制自己,甚至允许部分图像是透明的。 Swing类能够规定 每个组件的外观风格,甚至可以在运行时重新设置自己 应用程序的外观风格。此外, Swing组件的设计支持对组 件行为进行随意修改,用户可根据自己的需要进行设计
◼Swing特性 绝大多数Swing组件是轻型组件,只有少数几个顶层容器 不是轻型的。它们使用简化的图形基本元素在屏幕上绘 制自己,甚至允许部分图像是透明的。Swing类能够规定 每个组件的外观风格,甚至可以在运行时重新设置自己 应用程序的外观风格。此外,Swing组件的设计支持对组 件行为进行随意修改,用户可根据自己的需要进行设计。 7.1 Swing概述—Swing与AWT之间的关系
71 Swing概述— Swing与AWT之间的关系 Swing组件和容器 在 Javax.swing包中,定义了两种类型的组件:顶层容器 ( JFrame, JApplet, Jdialog、 JWindow)和轻量级组件 ( JComponent), Swing组件都是AW的 Container类的直接 子类和间接子类。图71列出了其中的部分继承关系图。 组件是一个可以以图形化的方式显示在屏幕上并能与用户 进行交互的对象,组件不能独立地显示出来,必须将组件放在 定的容器中才可以显示出来。容器( Container)也是一个类, 实际上是 Component的子类。因此,容器本身也是一个组件, 具有组件的所有性质,但是它的主要功能是容纳其它组件和容 器
◼Swing组件和容器 在Javax.swing包中,定义了两种类型的组件:顶层容器 (JFrame,JApplet,Jdialog、JWindow)和轻量级组件 (JComponent),Swing组件都是AWT的Container类的直接 子类和间接子类。图7.1列出了其中的部分继承关系图。 组件是一个可以以图形化的方式显示在屏幕上并能与用户 进行交互的对象,组件不能独立地显示出来,必须将组件放在 一定的容器中才可以显示出来。容器(Container)也是一个类, 实际上是Component的子类。因此,容器本身也是一个组件, 具有组件的所有性质,但是它的主要功能是容纳其它组件和容 器。 7.1 Swing概述—Swing与AWT之间的关系
71 Swing概述— Swing与AWT之间的关系 Container △ △ applet TExt Field JTeat Area frame JTree JTa J Frame 图7.1Java图形程序设计所用类的层次结构图
7.1 Swing概述—Swing与AWT之间的关系 Component Container Object JComponent JButton JTextField JTeatArea JTree JTable n JPaneln Frame Dialog JFrame JDialog Panel Applet JApplet Window 图7.1Java图形程序设计所用类的层次结构图
72框架 Java应用程序要创建一个用户界面,最常用的 Swing容器是 JFrame类。 JFrame类提供了一个包含标题、边框等的顶层窗 口,尽管 JFrame框架是一个容器,但不能直接用ad()把组件 添加到窗口中,而必须用 getcontentPane(add)得到内容窗 格
Java应用程序要创建一个用户界面,最常用的Swing容器是 JFrame类。JFrame类提供了一个包含标题、边框等的顶层窗 口,尽管JFrame框架是一个容器,但不能直接用add()把组件 添加到窗口中,而必须用getContentPane().add()得到内容窗 格。 7.2 框架
72框架 JFrame类的构造方法如下: 1.FRamed 创建一个无标题的框架 2 JFrame( String title)创建一个标题为te的框架
JFrame类的构造方法如下 : 7.2 框架 1.JFrame() 创建一个无标题的框架 2.JFrame(String title) 创建一个标题为title的框架
72框架 JFrame类的常用成员方法如下: 1. public void setVisible(Boolean b) 设置框架是否可见,框架默认不可见 2. public void set size(int width, int height) 设置框架的大小,框架默认位置是(0,0) 3. public void set Bounds(int x, int y, int width, int) 设置框架出现在屏幕上的初始位置(xy) 框架在屏幕上的宽和高为( width, height) 4. public void setResizable( boolean b 设置框架是否可调整大小,框架默认不可调整大小 5.public void setLocation(xy) 设置框架在屏幕左上角的放置位置为(X,y)处
JFrame类的常用成员方法如下: 7.2 框架 1.public void setVisible(Boolean b) 设置框架是否可见,框架默认不可见 2.public void setSize(int width,int height) 设置框架的大小,框架默认位置是(0,0) 3.public void setBounds(int x,int y,int width,int) 设置框架出现在屏幕上的初始位置(x,y), 框架在屏幕上的宽和高为(width,height) 4.public void setResizable(Boolean b) 设置框架是否可调整大小,框架默认不可调整大小 5.public void setLocation(x,y) 设置框架在屏幕左上角的放置位置为(x,y)处