java基础 布局管理器

概念:

  组建在容器(比如JFrame)中的位置和 大小 是由布局管理器来决定的。所有的容器都会使用一个布局管理器,通过它来自动进行组建的布局管理。

种类:

  java共提供了物种布局管理器:流式布局管理器(FlowLayout),边界布局管理器(BorderLayout),网络布局管理器(GridLayout),卡片布局管理器(CardLayout),网格布局管理器(GridBagLayout)。其中前三种是最常见的布局管理器。

一.  边界布局管理器

  边界布局管理器 BorderLayout 注意事项

  1. 不是五个部分都必须添加

  2. 中部组件会自动的调节大小

  3. JFrame,JDialog 默认布局管理器就是BorderLayout

  example:

  

 1 package layout;
 2 /*
 3  * borderlayout演示
 4  * 1. 集成JFrame
 5  * 2. 定义你需要的组件
 6  * 3. 创建组件(构造函数)
 7  * 4. 添加组件
 8  * 5. 对窗体设置属性
 9  * 6. 显示窗体
10  */
11 import java.awt.*;
12 import javax.swing.*;
13 public class demo extends JFrame{
14
15     /**
16      * @param args
17      */
18     //定义组件
19     JButton jb1,jb2,jb3,jb4,jb5;
20     public static void main(String[] args) {
21         // TODO Auto-generated method stub
22         demo  demo =  new demo();
23     }
24
25     public demo()
26     {
27         //创建组件
28         jb1 = new JButton("中部");
29         jb2 = new JButton("北部");
30         jb3 = new JButton("东部");
31         jb4 = new JButton("南部");
32         jb5 = new JButton("西部");
33
34         //添加各个组件
35         this.add(jb1,BorderLayout.CENTER);
36         this.add(jb2,BorderLayout.NORTH);
37         this.add(jb3,BorderLayout.EAST);
38         this.add(jb4,BorderLayout.SOUTH);
39         this.add(jb5,BorderLayout.WEST);
40
41         //设置窗体属性
42         this.setTitle("边界布局案例");
43         this.setSize(300,200);
44         this.setLocation(200,200);
45         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
46
47         //显示窗体
48         this.setVisible(true);
49     }
50 }

二. 流式布局FlowLayout

  FlowLayout布局,按照组建的添加次序将按钮组件(当然也可以是别人的组件)从左到右放置在容器中。当到达容器的边界时,组件将放置在下一行中。FlowLayout可以以左对齐,剧中对齐,以右对齐的方式排列组件。

  流式布局FlowLayout注意事项

  1. 不限制他所管理的组件大小,允许他们有最佳大小

  2. 当容器被缩放时,组件的位置可能变化,但组件的大小不变

  3. 默认组件是居中对齐,可以通过FlowLayoyt(intalign)函数来指定对齐方式

  exmaple:

  

 1 package layout;
 2 import java.awt.*;
 3
 4 import javax.swing.*;
 5
 6 /*
 7  *
 8  * 动能:流式布局管理器
 9  * */
10 public class demo5 extends JFrame{
11
12     /**
13      * @param args
14      */
15     //定义组件
16     JButton jb1,jb2,jb3,jb4,jb5,jb6;
17     public static void main(String[] args) {
18         // TODO Auto-generated method stub
19         demo5 de = new demo5();
20     }
21
22     //构造函数
23     public demo5()
24     {
25         //创建组件
26         jb1 = new JButton("关羽");
27         jb2 = new JButton("张飞");
28         jb3 = new JButton("赵云");
29         jb4 = new JButton("马超");
30         jb5 = new JButton("黄忠");
31         jb6 = new JButton("魏延");
32
33         //添加组件
34         this.add(jb1);
35         this.add(jb2);
36         this.add(jb3);
37         this.add(jb4);
38         this.add(jb5);
39         this.add(jb6);
40
41         //设置布局管理器,默认居中对齐,改成左对齐
42         this.setLayout(new FlowLayout(FlowLayout.LEFT));
43
44         //设置窗体属性
45         this.setTitle("边界布局案例");
46         this.setSize(300,200);
47         this.setLocation(200,200);
48         //禁止 用户改变窗体大小
49         this.setResizable(false);
50         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
51
52         //显示窗体
53         this.setVisible(true);
54     }
55 }

三. 网格布局GridLayout

  GridLayout布局,它将容器分割成多行多列,组件被填充到容器中的组件首先放置在左上角的网格中,然后从左到右放置其它的组件,当沾满改行的所有网格后,接着继续在下一行从左到右放置组件。

  注意事项:

  1. 组件的相对位置不随容器的缩放而变化,但大小会变化。

  2. 所有组建的大小相同

  3. 可以通过gridLayout(int rows, int cols, int hgap, int vgap)来指定网格的行/列,水平间隙/垂直间隙.

  example:

  

 1 package demo7;
 2
 3 import java.awt.*;
 4
 5 import javax.swing.*;
 6 public class demo7 extends JFrame{
 7
 8     /**
 9      * @param args
10      */
11     //定义组件
12
13     int size = 9;
14     //这里需要进行初始值
15     JButton jbs[]  = new JButton[size];
16     public static void main(String[] args) {
17         // TODO Auto-generated method stub
18         demo7 dem = new demo7();
19     }
20
21     //构造方法
22     public demo7()
23     {
24         //创建组件
25         for(int i=0;i<jbs.length;i++)
26         {
27             jbs[i] = new JButton(String.valueOf(i));
28         }
29
30         //设置网格布局
31         this.setLayout(new GridLayout(3,3,10,10));
32
33         //添加组件
34         for(int i=0;i<size;i++)
35         {
36             this.add(jbs[i]);
37         }
38
39         //设置窗体属性
40         this.setTitle("网格布局案例 ");
41         this.setSize(300, 200);
42         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
43         this.setLocation(200, 300);
44
45         //显示
46         this.setVisible(true);
47     }
48 }

四. 面板组件(Jpanel)

  在图形用户界面编程中,如果只是普通的组件布局,我们 用前面讲的三种布局管理器就可以解决,但是在比较复杂的布局要求时,就需要使用布局管理器的组合使用。

  一个界面只可以有一个JFrame窗体组件,但可以用多个Jpanel面板组件,而JPanel上也可使用FlowLayout,BorderLayout,GridLayout等各种布局管理器,这样可以组合使用达到较为复杂的布局效果。

  注意事项:

  1. JPanel是JComponent的子类

  2. 属于容器类组件,可以加入别的组件

  3. 默认布局管理器是流式布局

时间: 2024-10-17 16:10:34

java基础 布局管理器的相关文章

Java Swing布局管理器GridBagLayout的使用示例 [转]

GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直.水平或沿它们的基线对齐. 每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域. 下面就通过一个记事本案例去说明GridBagLayout的使用方法. 分析: 带有箭头的说明可以拉伸的. 4占用4个格

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 的布局管理器GridBagLayout的使用方法(转)

GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直.水平或沿它们的基线对齐. 每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域. 下面就通过一个记事本案例去说明GridBagLayout的使用方法. 分析: 带有箭头的说明可以拉伸的. 4占用4个格

Java界面布局管理器

布局管理器用来在图形用户界面中管理组件在容器中的布局,如排序顺序,组件大小,位置 布局管理器主要包括:FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout 程序中安排组件位置大小时,应该注意这两点 1.容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的这些属性.如果试图用Java语言提供的setLocation(),setSize(),setBound()等方法,则都会被布局管理器覆盖. 2.如果用户需

【Java Swing探索之路系列】之三:Java Swing布局管理器组件

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 一 BorderLayout BorderLayout是一种简单的布局策略,可以将其看作一个组件.它把容器分为东.南.西.北.中5个区域,每个组件将占据某个区域.而 这5个区域分别被命名为NORTH, WEST, EAST, CENTER, SOUTH,它们都被定义为静态 常量.静态常量可以直接引用,如

Java 的布局管理器GridBagLayout的使用方法【图文说明】

https://www.cnblogs.com/taoweiji/archive/2012/12/14/2818787.html GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直.水平或沿它们的基线对齐. 每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为

JAVA GUI布局管理器

边界布局管理器: a.布局方式:是把整个容器划分为五个部分.东西南北中,南北要贯通,中间最大 (不仅是中间的范围最大,权利也最大)当周边不存在的时候中间会占领周边,当中间不存在的时候周边不能占据中间 b.使用场景:不是用来直接放组件,而是用来放置子容器(中间容器)的 流布局管理器 : FlowFrame a.布局方式:是按从左往右,从上往下,由中间开始的方式依次排放组件,组件大小根据组件内容确定,组件的位置会随着容器大小的改变而改变 b.使用场景:用来放置组件,而不是用来放中间容器,流布局最好只

java边界布局管理器

public class BorderLayoutPosition extends JFrame{        String[] border={BorderLayout.CENTER,BorderLayout.NORTH,BorderLayout.SOUTH,BorderLayout.EAST,BorderLayout.WEST};    String[] names={"center Button","north Button","south But