Java教程-Java AWT 教程

Java AWT 教程
Java AWT(Abstract Window Toolkit)是用于在 Java 中开发基于图形用户界面(GUI)或基于窗口的应用程序的 API。
Java AWT 组件是与平台相关的,即组件的显示方式根据操作系统的视图进行。AWT 是重量级的,即其组件使用底层操作系统(OS)的资源。
java.awt 包提供了用于 AWT API 的类,例如 TextField、Label、TextArea、RadioButton、CheckBox、Choice、List 等。 AWT 教程将帮助用户以简单易懂的步骤理解 Java GUI 编程。
为什么 AWT 是平台无关的?
Java AWT 调用本地平台(操作系统)子程序来创建 API 组件,如 TextField、ChechBox、button 等。
例如,一个带有 TextField、label 和 button 等组件的 AWT GUI 在不同的平台(如 Windows、MAC OS 和 Unix)上具有不同的外观和风格。原因是各个平台对其本地组件具有不同的视图,而 AWT 直接调用创建这些组件的本地子程序。
简而言之,在 Windows 操作系统中,AWT 应用程序看起来像一个 Windows 应用程序,而在 MAC OS 中,它看起来像一个 Mac 应用程序。
Java AWT 层次结构
Java AWT 类的层次结构如下所示。
组件
所有元素,如按钮、文本字段、滚动条等,都称为组件。在 Java AWT 中,每个组件都有相应的类,如上图所示。为了将每个组件放置在屏幕上的特定位置,我们需要将它们添加到容器中。
容器
容器是 AWT 中可以包含其他组件(如按钮、文本字段、标签等)的组件。扩展 Container 类的类称为容器,如 Frame、Dialog 和 Panel。
它基本上是一个屏幕,在其中将组件放置在其特定位置。因此,它包含并控制组件的布局。
注意:容器本身也是一个组件(请参阅上图),因此我们可以在容器内添加容器。
容器的类型:
Java AWT 有四种类型的容器:
- 窗口(Window)
- 面板(Panel)
- 框架(Frame)
- 对话框(Dialog)
窗口(Window) 窗口是没有边框和菜单栏的容器。要创建一个窗口,必须使用框架、对话框或另一个窗口。我们需要创建 Window 类的实例来创建此容器。
面板(Panel) 面板是不包含标题栏、边框或菜单栏的容器。它是一个通用的容器,用于容纳组件。它可以包含其他组件,如按钮、文本字段等。Panel 类的实例创建一个容器,我们可以在其中添加组件。
框架(Frame) 框架是包含标题栏和边框的容器,并且可以有菜单栏。它可以包含其他组件,如按钮、文本字段、滚动条等。在开发 AWT 应用程序时,框架是最常用的容器。
Component 类的常用方法
Method | Description |
---|---|
public void add(Component c) | 在此组件上插入一个组件。 |
public void setSize(int width,int height) | 设置组件的大小(宽度和高度)。 |
public void setLayout(LayoutManager m) | 定义组件的布局管理器。 |
public void setVisible(boolean status) | 更改组件的可见性,默认为 false。 |
Java AWT 示例
要创建简单的 AWT 示例,需要一个框架。使用 Frame 在 AWT 中创建 GUI 有两种方法。
- 通过扩展 Frame 类(继承)
- 通过创建 Frame 类的对象(关联)
通过继承的 AWT 示例
让我们看一个简单的 AWT 示例,我们在其中继承 Frame 类。在这里,我们在 Frame 上显示 Button 组件。
AWTExample1.java
// 导入 Java AWT 类
import java.awt.*;
//将 Frame 类扩展到我们的类 AWTExample1
public class AWTExample1 extends Frame {
//使用构造函数初始化
AWTExample1() {
// 创建一个按钮
Button b = new Button("Click Me!!");
// 设置按钮在屏幕上的位置
b.setBounds(30,100,80,30);
// 将按钮添加到框架中
add(b);
// 框架大小 300 宽和 300 高
setSize(300,300);
//设置Frame的标题
setTitle("This is our basic AWT example");
// 没有布局管理器
setLayout(null);
// 现在框架将可见,默认情况下它是不可见的
setVisible(true);
}
// 主要方法
public static void main(String args[]) {
// 创建框架类的实例
AWTExample1 f = new AWTExample1();
}
}
上面的示例中使用了 setBounds(int x-axis, int y-axis, int width, int height) 方法,该方法设置了 awt button 的位置。
输出:
通过关联的 AWT 示例
让我们看一个简单的 AWT 示例,我们在其中创建 Frame 类的实例。在这里,我们在 Frame 上创建了 TextField、Label 和 Button 组件。 AWTExample2.java
// 导入 Java AWT 类
import java.awt.*;
//类 AWTExample2 直接创建 Frame 类的实例
class AWTExample2 {
// 使用构造函数初始化
AWTExample2() {
//创建一个框架
Frame f = new Frame();
// 创建标签
Label l = new Label("Employee id:");
// 创建一个按钮
Button b = new Button("Submit");
// 创建一个文本字段
TextField t = new TextField();
//设置上述组件在框架中的位置
l.setBounds(20, 80, 80, 30);
t.setBounds(20, 100, 80, 30);
b.setBounds(100, 100, 80, 30);
//将组件添加到框架中
f.add(b);
f.add(l);
f.add(t);
// 框架大小 300 宽和 300 高
f.setSize(400,300);
// 设置框架的标题
f.setTitle("Employee info");
// 没有布局
f.setLayout(null);
// 设置框架的可见性
f.setVisible(true);
}
// 主要方法
public static void main(String args[]) {
// 创建框架类的实例
AWTExample2 awt_obj = new AWTExample2();
}
}
输出: