📜  AWT容器(1)

📅  最后修改于: 2023-12-03 15:13:34.991000             🧑  作者: Mango

AWT容器介绍

Java AWT是Abstract Window Toolkit的缩写,它提供了一系列的类来实现GUI的基础框架。其中,容器是界面设计中最基础和最核心的部分。本文将介绍AWT容器。

AWT容器的分类

Java AWT容器主要分为两类:重量级容器和轻量级容器。

重量级容器

重量级容器继承自java.awt.Container类,其内部使用了本地操作系统的GUI实现。这使得重量级容器在界面渲染的速度和效果上有出色的表现,但也导致了它占用内存比较大、在跨平台上的展示效果不佳的问题。常见的重量级容器有Frame、Dialog、Window、ScrollPane、Panel、Applet等。

轻量级容器

轻量级容器继承自java.awt.Component类,它是使用Java代码实现的界面容器。相比于重量级容器,轻量级容器更加轻便,占据资源更小,同时在跨平台上的表现效果更好。常见的轻量级容器有JPanel、JWindow、JScrollPane、JToolBar等。

AWT容器的布局管理器

AWT容器提供了多种布局管理器来帮助程序员方便地布置容器内部的组件。布局管理器可以按照不同的方向、大小、填充等规则来排列内部组件。常用的布局管理器有FlowLayou、BorderLayout、GridLayout、CardLayout、BoxLayout等。

FlowLayout

FlowLayout布局管理器按照给定的方向,从左到右或从上到下,一个接一个地放置组件。当容器中的组件超出一行或一列时,会自动换行或者换列。FlowLayout是默认的布局管理器。

BorderLayout

BorderLayout布局管理器将一个容器划分为5个区域:东西南北和中间。组件可以添加到这5个区域当中,可以根据需要进行伸缩。

GridLayout

GridLayout布局管理器将容器划分为一定的行列。组件会按照给定的行列数进行平均分配,依次从左到右、从上到下排列。

CardLayout

CardLayout布局管理器将组件按照层次划分,每次只能显示一个组件。通过切换组件来显示不同的层次。

BoxLayout

BoxLayout布局管理器将组件进行线性排列。BoxLayout根据给定的方向来决定组件的摆放。BoxLayout有水平方向和垂直方向两种,可以实现横向或者纵向的布局。

总结

AWT容器是Java开发中GUI界面设计中最基础的部分之一。容器可以按照需要添加组件,并运用布局管理器来方便地排列组件。重量级容器依赖于操作系统底层的GUI实现,效率高、表现好但更占用内存、在跨平台上的展现也不佳;轻量级容器是以Java代码实现的界面容器,效率低、占用资源较少,而且在跨平台上的兼容性表现更佳。在GUI编程中,开发者需要根据具体情况来选择不同的容器和布局进行搭配使用,以达到最佳的程序运行效果。

代码片段:

import java.awt.*;
import javax.swing.*;

public class AwtContainerExample {
    public static void main(String[] args) {
        
        // 创建高度为300,宽度为400的Frame,并设置布局管理器
        Frame frame = new Frame("AwtContainerExample");
        frame.setSize(400, 300);
        frame.setLayout(new BorderLayout());
        
        // 添加Panel
        Panel panel = new Panel();
        panel.setLayout(new GridLayout(3, 1));
        panel.add(new Label("第一行"));
        panel.add(new Label("第二行"));
        panel.add(new Label("第三行"));
        frame.add(panel, BorderLayout.CENTER);
        
        // 显示Frame
        frame.setVisible(true);        
    }
}