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); } }
在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); } }
布局管理器
是开发过程中,每设计一个窗体,都要向其中添加若干组件。随着组件的增多,排列起来就会杂乱无章,这时候就需要布局管理器,
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); } }
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); } }
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); } }
4.卡片式布局CardLayout(有点小复杂)