Java AWT中常用的三种布局管理器详解

作者:码农的命 时间:2023-02-11 20:55:25 

布局管理器

在java.awt 包中提供了5中常用的布局管理器,分别式FlowLayout(流式布局管理器)、BorderLayout(边界布局管理器)、GridLayout(网格布局管理器)、GridBagLayout(网格包布局管理器)和CradLayout(卡片布局管理器)。

每种容器在创建时,没有进行布置时会使用默认的布局管理器,在程序中可以通过setLayout()方法设置布局管理器,通过布局管理器自动进行组件的布局管理。

例如,把一个Frame 窗体的布局管理器设置为FlowLayou,代码入下:

+ Frame frame = new Frame();
+ frame.setLayout(new FlowLayout());

一、流程布局管理器(FlowLayout)

流程布局管理器(Flow Layout)是简单的布局管理器,在这种布局管理下,容器会按照组件的顺序从左到放置。当到容器的边界时,会自动将组件放到下一行的开始位置。

这些组件可以左对齐,右对齐,居中对齐(默认方式)

流程布局管理器(Flowlayout)运用如下:

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class TestFlowLayout {
   public static void main(String[] args) {
       Frame f = new Frame("ser");
       f.setLayout(new FlowLayout(FlowLayout.CENTER, 50, 100));//居中 将组件间的横向间隙50像素和纵向间隙100像素
       //f.setLayout(new FlowLayout(FlowLayout.LEFT, 50, 100));//靠左   窗口变大体现效果更佳
       //f.setLayout(new FlowLayout(FlowLayout.RIGHT, 50, 100));//靠右  窗口变大体现效果更佳        f.setSize(200, 500);//(宽,高)
       f.setLocation(300, 200);//(x, y)
       f.setVisible(true);//窗体可见
       //设置大小固定  默认是可以自由拉伸的 false 不可以改变
       f.setResizable(true);
       f.add(new Button("First"));
       f.add(new Button("Second"));
       f.add(new Button("Third"));
       f.add(new Button("Forth"));
       //监听窗口关闭
       f.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
           }
       });
   }
}

效果图:

Java AWT中常用的三种布局管理器详解

二、边界布局管理器(BorderLayout)

BorderLayout(边界布局管理器)是一种较为复杂的布局方式,它将容器划分为5个区域,分别是东(EAST),西(WEST),南(SOUTH),北(NORTH),中(CENTER)。

组件可以被放置在这5个区域的任意一个位置。

边界布局管理器(BorderLayout)应用如下:

//东西南北中
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestBorderLayout {
   public static void main(String[] args) {
       Frame frame = new Frame("sss");
       frame.setVisible(true);
       frame.setSize(500,500);
       Button east = new Button("east");
       Button west = new Button("west");
       Button north = new Button("north");
       Button south = new Button("south");
       Button center = new Button("center");        frame.add(east,BorderLayout.EAST);
       frame.add(west,BorderLayout.WEST);
       frame.add(north,BorderLayout.NORTH);
       frame.add(south,BorderLayout.SOUTH);
       frame.add(center,BorderLayout.CENTER);
       //监听窗口关闭
       frame.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
           }
       });
   }  
}

效果图:

Java AWT中常用的三种布局管理器详解

三 、网格布局管理器

GridLayout(网格布局管理器)是用纵横将容器分为n行m列的大小相等的网格,每个网格中放置一个组件。依照放入顺序,依次放入,第一行放满后放第二行。

GridLayout与FlowLayout的不同是,放置在GridLayout布局管理器中的组件会自动占据网格的整个区域。

网格布局管理器(GrudLayout)应用如下:

//网格式布局
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class GridLayout {
   public static void main(String[] args) {
       Frame frame = new Frame("yyy");
       frame.setVisible(true);
       frame.setSize(600,600);
       Button btn1 =new Button("btn1");
       Button btn2 =new Button("btn2");
       Button btn3 =new Button("btn3");
       Button btn4 =new Button("btn4");
       Button btn5 =new Button("btn5");
       Button btn6 =new Button("btn6");        frame.setLayout(new java.awt.GridLayout(3,2));
       frame.add(btn1);
       frame.add(btn2);
       frame.add(btn3);
       frame.add(btn4);
       frame.add(btn5);
       frame.add(btn6);       frame.addWindowListener(new WindowAdapter() {
          @Override
          public void windowClosing(WindowEvent e) {
              System.exit(0);
          }
      });
   }
}

效果图:

Java AWT中常用的三种布局管理器详解

四、 综合实例运用

使用上述布局方法实现如下图所示的组件添加:

Java AWT中常用的三种布局管理器详解

实现代码如下:

/*
思路:
    首先分成三个部分
    第一个部分: 东西两个位置可以使用BorderLayout(边界布局管理器) 然后在中间加入一个
                GridLayout(网格布局管理器)两行一列放入组件
    第二个部分: 东西两个位置可以使用BorderLayout(边界布局管理器) 然后在中间加入一个
                GridLayout(网格布局管理器)两行两列放入组件
    第一个部分: GridLayout(网格布局管理器)两行两列放入组件
     一共用到5个panel(面板)            
*///主要是一个嵌套的思想
import java.awt.*;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class ExGUI {
   public static void main(String[] args) {
       Frame frame = new Frame();
       frame.setSize(600,300);
       frame.setVisible(true);
       frame.setBackground(Color.BLACK);
       frame.setLayout(new GridLayout(3,1));//少了就只有一个
       //为什么加入的那件
       Panel p1 = new Panel(new BorderLayout());
       Panel p2 = new Panel(new GridLayout(2,1));
       Panel p3 = new Panel(new BorderLayout());
       Panel p4 = new Panel(new GridLayout(2,2));
       Panel p5 = new Panel(new GridLayout(2,2));
       //上
       p1.add(new Button("b1"),BorderLayout.WEST);
       p1.add(new Button("b2"),BorderLayout.EAST);
       p2.add(new Button("b3"));
       p2.add(new Button("b4"));        p1.add(p2,BorderLayout.CENTER);        p3.add(new Button("b1"),BorderLayout.WEST);
       p3.add(new Button("b2"),BorderLayout.EAST);
       for (int i = 0; i < 4; i++) {
           p4.add(new Button("b"+i));
       }
       p3.add(p4,BorderLayout.CENTER);
       for (int i = 0; i < 4; i++) {
           p5.add(new Button("b"+i));
       }
       frame.add(p1);
       frame.add(p3);
       frame.add(p5);//面版不能复用只能使用一次 加入frame比加入panel优先
       frame.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);//退出系统
           }
       });
   }
}

运行效果:

Java AWT中常用的三种布局管理器详解

来源:https://blog.csdn.net/qq_45890741/article/details/124070301

标签:Java,AWT,布局管理器
0
投稿

猜你喜欢

  • C#实现UI控件输出日志的方法详解

    2021-10-07 02:45:41
  • Android 友盟第三方登录与分享的实现代码

    2022-11-12 22:27:48
  • 详解MyBatis-Plus Wrapper条件构造器查询大全

    2023-09-05 08:55:52
  • C#中partial关键字的作用

    2023-12-26 03:41:39
  • 一次Jvm old过高的排查过程实战记录

    2023-05-07 23:33:49
  • java报错:找不到或无法加载主类的解决方法简单粗暴

    2023-03-29 17:20:58
  • C#9.0推出的4个新特性介绍

    2021-10-10 07:49:29
  • Python代码一键转Jar包及Java调用Python新姿势

    2023-02-13 08:16:22
  • DataGridView自定义单元格表示值、Error图标显示的方法介绍

    2023-12-09 19:07:04
  • Android+SQLite数据库实现的生词记事本功能实例

    2023-06-18 10:41:35
  • SpringBoot配置及使用Schedule过程解析

    2021-12-31 18:47:32
  • 简单实现Android应用的启动页

    2022-04-15 14:23:45
  • java精度计算代码 java指定精确小数位

    2023-07-31 03:03:58
  • Android中使用TextView实现文字跑马灯效果

    2023-07-28 11:07:33
  • C#嵌套类的访问方法

    2021-07-26 18:03:20
  • Java非静态成员变量之死循环(详解)

    2022-04-15 09:18:20
  • Java中的Map集合简单汇总解析

    2023-08-22 19:12:07
  • Java集合类中文介绍

    2022-07-22 18:02:20
  • C#实现自定义Dictionary类实例

    2022-12-19 09:23:47
  • Linux下g++编译与使用静态库和动态库的方法

    2023-06-21 13:41:46
  • asp之家 软件编程 m.aspxhome.com