内蒙古科技大学 教案 第八章图形用户界面 本套学习重要目标 学握图形界面的概念 掌握SWING和AWT的概念 掌握事件处理机制 §8.1引言 本章介绍Java GUI程序设计的基础知识。GU是graphicaluser interface,提起界 面其实大家再熟悉不过了,我们平时使用的应用程序大都有界面,界面就是用来与用 户交互的手段。 §8.2 Swing和AWT AWT(Abstract Window Toolkit,抽象窗口工具包)。AWT适合开发简单的图形用 户界面,但并不适合开发复杂的GU项目。 AWT的用户界面组件被一种更稳定、更通用和更灵活的库取代,这就是Swig组 件库。 Swig组件更少地依赖于目标平台并且更少地使用自己的GUI资源。 Swing组件称为轻量级组件,AWT组件称为重量级组件。 为了区别新的Swig组件类和它对应的AWT组件类,Swing组件类都以字母J 为前缀来命名。因为AWT组件终究要退出历史舞台,所以本课程只使用Swig组件。 §8.3 Java GUI API GUI API包含的类可以分成三组: ①组件类(component class) ②容器类(container class) ③辅助类(helper class) §8.4框架 创建一个用户界面需要创建一个框架JFrame)来存放用户界面组件。 §8.5布局管理器 在许多其他窗口系统中,用户界面组件是通过硬编码的像素度量管理的。例如: 将一个按钮放在窗口的(10,10)位置处。 使用硬编码的像素度量,这个用户界面可能在一个系统中看上去很好,但在另 个系统上就不正常。 Java的布局管理器提供了一种层面的抽象,自动将用户界面映射到所有的窗口系 第1页
内 蒙 古 科 技 大 学 教 案 第 1 页 第八章 图形用户界面 本章学习重要目标: 掌握图形界面的概念 掌握 SWING 和 AWT 的概念 掌握事件处理机制 §8.1 引言 本章介绍 Java GUI 程序设计的基础知识。GUI 是 graphical user interface,提起界 面其实大家再熟悉不过了,我们平时使用的应用程序大都有界面,界面就是用来与用 户交互的手段。 §8.2 Swing 和 AWT AWT(Abstract Window Toolkit,抽象窗口工具包)。AWT 适合开发简单的图形用 户界面,但并不适合开发复杂的 GUI 项目。 AWT 的用户界面组件被一种更稳定、更通用和更灵活的库取代,这就是 Swing 组 件库。 Swing 组件更少地依赖于目标平台并且更少地使用自己的 GUI 资源。 Swing 组件称为轻量级组件,AWT 组件称为重量级组件。 为了区别新的 Swing 组件类和它对应的 AWT 组件类,Swing 组件类都以字母 J 为前缀来命名。因为 AWT 组件终究要退出历史舞台,所以本课程只使用 Swing 组件。 §8.3 Java GUI API GUI API 包含的类可以分成三组: ① 组件类(component class) ② 容器类(container class) ③ 辅助类(helper class) §8.4 框架 创建一个用户界面需要创建一个框架(JFrame)来存放用户界面组件。 §8.5 布局管理器 在许多其他窗口系统中,用户界面组件是通过硬编码的像素度量管理的。例如: 将一个按钮放在窗口的(10,10)位置处。 使用硬编码的像素度量,这个用户界面可能在一个系统中看上去很好,但在另一 个系统上就不正常。 Java 的布局管理器提供了一种层面的抽象,自动将用户界面映射到所有的窗口系
内蒙古科技大学 教 案 统。 Java的GI组件都放置在容器中,它们的位置是由容器的布局管理器来管理的: 布局管理器是使用布局管理器类创建的。 使用setLayout(alayoutManager)方法在容器中设置布局管理器 布局管理器的种类: ①FlowLayout ②GridLayout ③BorderLayou The FlowLayout Class FlowLayout是最简单的布局管理器。按照组件添加的顺序,从左到右地将组件排 列在容器中。 当放满一行时,就开始新的一行。 可以使用 FlowLayout.LEFT FlowLayout.RIGHT FlowLayout.CENTER 之一来指定组件的对齐方式。 还可以指定组件之间以像素为单位的间隔, import javax.swing.JLabel; importjavax.swing.JTextField. Lawt FlowLa public class ShowFlowLayout extends JFrame public ShowFlowLayout(){ //Set FlowLayout,aligned left with horizontal gap 10 //Add labels and text fields to the frame add(new JLabel("First Name")); add(new JTextField(8)) add(new JLabel("MI") add(newJTextField(1)): add(new JLabel("Last Name")); add(new JTextField(8)). **Main method publicstatic void main() ShowFlowLayout frame=new Sh frame.setTitle("ShowFlowLayout"): 第2页
内 蒙 古 科 技 大 学 教 案 第 2 页 统。 Java 的 GUI 组件都放置在容器中,它们的位置是由容器的布局管理器来管理的。 布局管理器是使用布局管理器类创建的。 使用 setLayout(aLayoutManager)方法在容器中设置布局管理器。 布局管理器的种类: ① FlowLayout ② GridLayout ③ BorderLayout The FlowLayout Class FlowLayout 是最简单的布局管理器。按照组件添加的顺序,从左到右地将组件排 列在容器中。 当放满一行时,就开始新的一行。 可以使用 FlowLayout.LEFT FlowLayout.RIGHT FlowLayout.CENTER 之一来指定组件的对齐方式。 还可以指定组件之间以像素为单位的间隔。 import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JFrame; import java.awt.FlowLayout; public class ShowFlowLayout extends JFrame { public ShowFlowLayout() { // Set FlowLayout, aligned left with horizontal gap 10 // and vertical gap 20 between components setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20)); // Add labels and text fields to the frame add(new JLabel("First Name")); add(new JTextField(8)); add(new JLabel("MI")); add(new JTextField(1)); add(new JLabel("Last Name")); add(new JTextField(8)); } /** Main method */ public static void main(String[] args) { ShowFlowLayout frame = new ShowFlowLayout(); frame.setTitle("ShowFlowLayout");
内蒙古科技大学 教案 frame setsize(200 200) (u)//Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE). frame.setVisible(true): 第3页
内 蒙 古 科 技 大 学 教 案 第 3 页 frame.setSize(200, 200); frame.setLocationRelativeTo(null); // Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }