AWT的应用

AWT(Abstract Window TookIT)是java用于创建用户界面和绘制图形的所有类

AWT组件和容器

AWT包含了很多类和接口,用于java Application的GUI(图形用户界面)编程。GUI的各种元素,窗口、按钮、文本框、等由java的类来表示,使用AWT所涉及的类一般都在java.awt的包及其子包中,Container和Component是AWT两个核心类

编写界面致命的缺点是:图形和操作系统有关,awt开发的界面在不同的操作系统上呈现的界面是不同的,所以后期开发使用swing比较多,但即使如此swing离不开AWT

两种常用的Container

1Windwo:其对象表示自由停泊的顶级窗口

2.Panel其对象可以容纳其他Component对象,但不能独立存在,必须加到其他Container中

Frame是Window子类,由Frame或其子类创建的对象为一个窗体

创建一个窗口;

package text4;
import java.awt.color.*;
import java.awt.Color;
import java.awt.Frame;

public class Hello{
    public static void main(String[] args) {
        //创建一个Frame对象
        Frame f=new Frame();
        //设置Frame的大小
        f.setSize(300, 200);
        //设置位置
        f.setLocation(20,30);
        //设置背景色
        f.setBackground(Color.YELLOW);
        //设置可见
        f.setVisible(true);
        
    }
    
}
View Code

在java窗口编程一般在Panel中添加组件,再将Panel组件添加到Frame中,Panel对象可以看成是容纳Component的空间,可以拥有自己的布局

在窗口中增加面板;

package text4;
import java.awt.color.*;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;
public class Hello{
    public static void main(String[] args) {
        //创建一个Frame对象
        Frame f=new Frame();
        //设置Frame的大小
        f.setSize(300, 200);
        //设置位置
        f.setLocation(20,30);
        //设置背景色
        f.setBackground(Color.RED);
        //创建一个Panel
        Panel panel1=new Panel(null);
        //创建panel的大小
        panel1.setSize(100,100);
        //设置背景色
//        panel1.setBackground(Color.BLUE);
        //设置位置
        panel1.setLocation(100,50);
        //将panel放到Frame中
        f.add(panel1);
        //设置可见
        f.setVisible(true);
    }
    
}
View Code

布局管理器

是开发过程中,每设计一个窗体,都要向其中添加若干组件。随着组件的增多,排列起来就会杂乱无章,这时候就需要布局管理器,

BorderLayout 

BoxLayout

FlowLayout

GirdBagLayout

GirdLayout

CardLayout

1.FlowLayout布局

流失布局管理器可以让组件从左往右依次排列,排满一行就换一行,行高是由控制组件高度决定的。FlowLayout是所有的Panel类型容器默认布局,默认情况下是居中对齐,(FlowLayout.ENTER)

使用流式布局(对齐)

package text4;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;

public class Hello {
    public static void main(String[] args) {
        // 居中
        layout("居中", FlowLayout.CENTER);
        // 开始边对齐
        layout("开始边对齐", FlowLayout.LEADING);
        // 向左
        layout("向左", FlowLayout.LEFT);
        // 向右
        layout("向右", FlowLayout.RIGHT);
        // 结束边对齐
        layout("结束边对齐", FlowLayout.TRAILING);
    }

    private static void layout(String title, int type) {
        // 创建一个title,标题为title
        Frame frame = new Frame(title);
        // 设置布局方式为FlowLayout
        frame.setLayout(new FlowLayout(type));
        // 设置窗口大小
        frame.setSize(400, 300);
        // 设置窗口位置
        frame.setLocation(20, 30);
        // 创建多个按钮
        Button btn1 = new Button("1");
        Button btn2 = new Button("2");
        Button btn3 = new Button("3");
        Button btn4 = new Button("4");
        // 添加按钮
        frame.add(btn1);
        frame.add(btn2);
        frame.add(btn3);
        frame.add(btn4);
        // 设置窗口可见
        frame.setVisible(true);
    }
}
View Code

 2.BorderLayout布局(东西南北中)

package text5;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;

public class Hello {
    public static void main(String[] args) {
        // 创建一个Frame,标题是BorderLayout布局
        Frame f = new Frame("BorderLayout 布局");
        // 设置Frame的大小
        f.setSize(400, 300);
        // 设置布局管理器
        f.setLayout(new BorderLayout());
        // 创建5个按钮
        Button[] b = new Button[5];
        b[0] = new Button("东");
        b[1] = new Button("西");
        b[2] = new Button("南");
        b[3] = new Button("北");
        b[4] = new Button("中");
        f.add(b[0], BorderLayout.EAST);
        f.add(b[1], BorderLayout.WEST);
        f.add(b[2], BorderLayout.SOUTH);
        f.add(b[3], BorderLayout.NORTH);
        f.add(b[4], BorderLayout.CENTER);
        //
        f.setVisible(true);

    }
}
View Code

3.GridLayout布局,将控件按网络排列,基本布局策略是把容器的空间划分成若干行和若干列的区域(行列)

package text5;

import java.awt.GridLayout;
import java.awt.Frame;
import java.awt.Button;

public class Hello2 {
    public static void main(String[] args) {
        // 创建一个Frame,标题是GridLayout
        Frame f = new Frame("GridLayout 布局");
        // 设置Frame的大小
        f.setSize(400, 300);
        // 设置布局管理器
        f.setLayout(new GridLayout(2, 3));// 两行三列
        // 添加按钮
        for (int i = 0; i < 6; i++) {
            Button btn = new Button(String.valueOf(i));// 将int转换成字符串
            f.add(btn);
        }
        f.setVisible(true);
    }
}
View Code

4.卡片式布局CardLayout(有点小复杂)

原文地址:https://www.cnblogs.com/helloworld2019/p/10688537.html