zoukankan      html  css  js  c++  java
  • 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 }
    View Code

    二. 流式布局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 }
    View Code

    三. 网格布局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 }
    View Code

    四. 面板组件(Jpanel)

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

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

      注意事项:

      1. JPanel是JComponent的子类

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

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

  • 相关阅读:
    excel使用总结
    使用spring的@Scheduled注解执行定时任务,启动项目不输出警告
    web.xml配置错误导致applicationContext.xml配置重复加载
    POI3.8解决导出大数据量excel文件时内存溢出的问题
    linux常用命令总结
    javax.mail 发送邮件异常
    eclipse下创建maven项目
    java单例模式的几种写法比较
    msql数据迁移,myisam及innoDB
    JS监听回车事件
  • 原文地址:https://www.cnblogs.com/lt132024/p/5953780.html
Copyright © 2011-2022 走看看