AWT布局管理器

布局管理器

容器内可以存放各种组件,而组件的位置和大小是由容器内的布局管理器来决定的。在AWT中为我们提供了以下5种布局管理器:

①   FlowLayout 流式布局管理器

②   BorderLayout 边界布局管理器

③   GridLayout 网格布局管理器

④   CradLayout 卡片布局管理器

⑤   GridBagLayout 网格包布局管理器

容器中组件的布局通常由布局管理器控制。每个Container(比如一个Panel或一个Frame)都有一个与他相关的缺省布局管理器,Panel容器默认的是FlowLayout,Frame容器默认的是BorderLayout,我们可以通过调用setLayout()来改变布局管理器;

可以通过设置空布局管理器,来控制组件的大小金和位置。可以调用setLayout(null)。

在设置空布局管理器后,必须对所有的组件调用setLocation(),setSize()或setBounds(),将它们定位在容器中。

流式布局管理器

 1 class MyFrame3 extends Frame {
 2     public MyFrame3(String title) {
 3         super(title);
 4     }
 5
 6     public void init() {
 7         FlowLayout layout=new FlowLayout(FlowLayout.LEFT);//设置左对齐
 8         this.setLayout(layout);
 9         this.setBackground(Color.CYAN);
10         this.add(new Button("btn1"));
11         this.add(new Button("btn2"));
12         this.add(new Button("btn3"));
13         this.add(new Button("btn4"));
14         this.add(new Button("btn5"));
15         this.add(new Button("btn6"));
16         this.add(new Button("btn7"));
17         this.add(new Button("btn8"));
18         this.setSize(300, 300);
19         this.setVisible(true);
20     }
21 }

边界布局管理器

 1 class MyFrame4 extends Frame {
 2     public MyFrame4(String title) {
 3         super(title);
 4     }
 5
 6     public void init() {
 7         this.setBackground(Color.CYAN);
 8         this.add(new Button("btn1"),BorderLayout.EAST);
 9         this.add(new Button("btn2"),BorderLayout.WEST);
10         this.add(new Button("btn3"),BorderLayout.NORTH);
11         this.add(new Button("btn4"),BorderLayout.SOUTH);
12         this.add(new Button("btn5"),BorderLayout.CENTER);
13         this.setSize(300, 300);
14         this.setVisible(true);
15     }
16 }

网格布局管理器

 1 class MyFrame5 extends Frame {
 2     public MyFrame5(String title) {
 3         super(title);
 4     }
 5
 6     public void init() {
 7         GridLayout layout=new GridLayout(3,2);//创建一个3行2列的网格
 8         this.setLayout(layout);
 9         this.setBackground(Color.CYAN);
10         this.add(new Button("btn1"));
11         this.add(new Button("btn2"));
12         this.add(new Button("btn3"));
13         this.add(new Button("btn4"));
14         this.add(new Button("btn5"));
15         this.setSize(300, 300);
16         this.setVisible(true);
17     }
18 }

卡片布局管理器

 1 class MyFrame6 extends Frame {
 2     private Panel cardPanel=null;
 3     private Panel ctrolPanel=null;
 4     private CardLayout cardLayout=null;
 5     private FlowLayout flowLayout=null;
 6     private Label lb1,lb2,lb3,lb4;
 7     private Button btnFirst,btnPrevious,btnNext,btnLast;
 8     private TextField txtContent;
 9     public MyFrame6(String title) {
10         super(title);
11     }
12
13     public void init() {
14         //创建2个面板容器
15         cardPanel=new Panel();
16         ctrolPanel=new Panel();
17
18         //创建2个布局管理器
19         cardLayout=new CardLayout();
20         flowLayout=new FlowLayout();
21
22         //给容器设置指定的布局管理器
23         cardPanel.setLayout(cardLayout);//卡片容器中放置卡片布局
24         ctrolPanel.setLayout(flowLayout);//控制容器放置流式布局
25
26         //声明创建4个标签控件和一个文本框控件
27         lb1=new Label("第一页内容",Label.CENTER);
28         lb2=new Label("第二页内容",Label.CENTER);
29         txtContent=new TextField();//编辑文本框
30         lb3=new Label("第四页内容",Label.CENTER);
31         lb4=new Label("第五页内容",Label.CENTER);
32
33         //构建四个按钮对象
34         btnFirst=new Button("第一张");
35         btnPrevious=new Button("上一张");
36         btnNext=new Button("下一张");
37         btnLast=new Button("最后一张");
38         ctrolPanel.add(btnFirst);
39         ctrolPanel.add(btnPrevious);
40         ctrolPanel.add(btnNext);
41         ctrolPanel.add(btnLast);
42
43         //把四个标签控件和一个文本框控件添加到卡片容器中
44         cardPanel.add(lb1);
45         cardPanel.add(lb2);
46         cardPanel.add(txtContent);
47         cardPanel.add(lb3);
48         cardPanel.add(lb4);
49         this.add(cardPanel,BorderLayout.CENTER);//将卡片容器放在中部
50         this.add(ctrolPanel,BorderLayout.SOUTH);//将控制容器放在南部
51         this.setSize(400, 300);
52         this.setVisible(true);
53     }
54 }

时间: 2024-10-03 08:18:50

AWT布局管理器的相关文章

learning java AWT 布局管理器BorderLayout

BorderLayout 将容器分为EAST, SOUTH, WEST,NORTH,CENTER五个区域. public class BorderLayoutTest { public static void main(String[] args) { var f = new Frame("BorderLayout"); f.setLayout(new BorderLayout()); f.add(new Button("south"), BorderLayout.

Java之GUI编程(二)——布局管理器

在上篇博客Java之GUI编程(一)中我已经对GUI编程的组件和事件做了简单介绍了,现在来看看另外一部分关于组件在各个平台是如何做到仍能保持自己合理的位置大小以及外观的. 已经说了Java是跨平台运行的,但是不同的平台对于点及坐标的定义不完全相同.而且屏幕的解析度分辨率不同也会造成位置的变化,为了确保每个组件的相对位置和大小以及外观,java就设计了布局管理器. 布局管理器是对容器中的元素进行管理,按照一定的规则排放容器里面的元素.它控制了组件的摆放. 布局管理器分类: FlowLayout:浮

AWT和布局管理器

AWT(Abstract Window Toolkit)抽象窗口开发包 component:可以显示出来的与用户进行交互的图形元素 container:容纳其他component元素的容器:continer可以容纳component:所以container可以容纳container. continer对象可以使用add方法添加其他的component对象. 一般的component不能独立显示出来,必须放在某一continer对象中才可以显示出来 两种常用的container: 1.Window

【Swing 2】布局管理器上

很苦逼的是,每次想记录一个小程序,发现,要给别人讲清楚,总是得分很多模块讲解. 所以今天来讲下Swing组件的三大布局管理器. 参考:<Head First Java>第十三章 1. BorderLayout--边界布局 2. FlowLayout--顺序布局 3. BoxLayout--不知道叫啥 1. BorderLayout(边界布局) 该管理器把背景分成东南西北中五大块,这是框架默认的布局管理器 1 package demo; 2 3 import javax.swing.*; 4 i

JAVA 边界布局管理器

//边界布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian1 extends JFrame{ //定义组件 JButton an1,an2,an3,an4,an5; public static void main(String[] args){ //运行本类的构造方法 Jiemian1 jiemian = new Jiemian1(); } public Jiemian1(){ //创建按钮 an1 = new

JAVA 网格布局管理器

//网格布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian3 extends JFrame{ //定义组件 JButton[] an = {null,null,null,null,null,null,null,null}; public static void main(String[] args){ //运行本类的构造方法 Jiemian3 jiemian = new Jiemian3(); } public

JAVA_布局管理器

1 /* 范例名称:FlowLayout 用法举例 2 * 源文件名称:TestFlowLayout.java 3 * 要 点: 4 * 1. 布局管理器的概念和作用 5 * 2. FlowLayout的性质及用法 6 */ 7 8 import java.awt.*; 9 10 public class TestFlowLayout { 11 public static void main(String args[]) { 12 Frame f = new Frame("Flow Layout

布局管理器

线性布局 线性布局由LinearLayout类来代表.可以控制组件横向排列和纵向排列. 注:android:gravity属性中的多个属性值之间用竖线隔开,但竖线前后千万不能出现空格. 表格布局 表格布局由TableLayout所代表,表格布局采用行.列的形式来管理UI组件,TableLayout并不需要明确地声明包含多少行.多少列,而是通过添加TableRow.其他组件来控制表格的行数和列数. 每次向TableLayout中添加一个TableRow,该TableRow就是一个表格行,Table

JAVA 三种基本的布局管理器

1.FlowLayout 最简单的布局管理器,使用该框架,按照组件添加的顺序,从左到右的将组件排列在容器中. 当一行放满后,开始新的一行.可以使用三个常量(用来指定组建的对齐方式): FlowLayout.RIGHT FlowLayout.CENTER FlowLayout.LEFT package chapter12; import javax.swing.JFrame; import java.awt.FlowLayout; import javax.swing.JLabel;// impo