文章目录

  • 布局管理器
    • 一、流程布局管理器(FlowLayout)
    • 二、边界布局管理器(BorderLayout)
    • 三 、网格布局管理器
    • 四、 综合实例运用

布局管理器

  • 在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() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}
}

效果图:


二、边界布局管理器(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() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}
}

效果图:


三 、网格布局管理器

  • 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() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}
}

效果图:


四、 综合实例运用

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


实现代码如下:

/*
思路:首先分成三个部分第一个部分: 东西两个位置可以使用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() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);//退出系统}});}
}

运行效果:


Java AWT中常用的三种布局管理器相关推荐

  1. JAVA共有几种窗体布局方式_在Java GUI程序开发中常见的三种布局管理器是什么

    答:FlowLayout 流式布局,从左到右,如果到边界就换行再从左到右. BorderLayout 边界布局(默认布局方式),按东西南北中五个方向来布局,默认是中.后设置在同样位置的控件会覆盖之前的 ...

  2. java的布局管理器_Java中提供了几种布局管理器

    近日,很多网友都在关注Java中提供了几种布局管理器这个话题,那么Java中提供了几种布局管理器具体情况是怎么样的呢?Java中提供了几种布局管理器的相关信息有哪些?下面的内容是小编为大家找到的关于J ...

  3. 【Java AWT 图形界面编程】LayoutManager 布局管理器 ④ ( GridLayout 网格布局 | GridBagLayout 网格包布局 )

    文章目录 一.GridLayout 网格布局 二.GridLayout 构造函数 三.GridLayout 网格布局代码示例 四.GridBagLayout 网格包布局 一.GridLayout 网格 ...

  4. mysql中常用的三种插入数据的语句

    mysql中常用的三种插入数据的语句: insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错: replace into表示插入替换数据,需求表中有Prim ...

  5. Android中常见五种布局管理器——RelativeLayout、LinearLayout、FrameLayout、TableLayout、GridLayout

    目录 布局管理器 RelativeLayout 常见属性 Relative的实践操作(实现软件更新界面) LinearLayout 常见属性 LinearLayout的实践操作(模范登录以及微信底部) ...

  6. java swing 常用的三种布局方式:边界布局、流布局、网格布局管理器

    作者:firstmiki 链接:http://www.cnblogs.com/firstmiki/p/6340001.html 来源:firstmiki的博客 著作权归作者所有,转载请联系作者获得授权 ...

  7. JAVA图形界面(GUI)之布局管理器

    一个友好的读者界面是一款软件成功的关键因素之一.布局管理器就是用来管理读者的界面.摆放的效果直接影响到界面是否美观.布局管理器通过布局管理类来对各种读者组件进行管理. 使用布局管理器,不仅可以有序的排 ...

  8. 《Java SE实战指南》23-07:布局管理器

    内容导航: 前言 ##1.4.布局管理器 用户界面上的组件可以按照不同的方式进行排列,例如:可以依序水平排列,或者按网格方式进行排列: 每种方案都是指组件的一种布局,要管理这些布局,就需要使用布局管理 ...

  9. DL中常用的三种K-Lipschitz技术

    文章目录 Lipschitz continuity Weight clipping Gradient penalty Spectral Normalization 理论推导 Power iterati ...

最新文章

  1. 不要怂,就是GAN (生成式对抗网络) (六):Wasserstein GAN(WGAN) TensorFlow 代码
  2. linux上安装redis
  3. React中判断已完成的个数
  4. [js] 说说你对js对象生命周期的理解
  5. 工作按钮(216):点击按钮报错--bug修复--直接写接口里面
  6. Oracle中通过Function,存储过程,触发器,调用实现解析Clob字段中存在的xml字符串...
  7. 虚拟机NAT模式联网
  8. 275. H-Index II 递增排序后的论文引用量
  9. 一行命令搞定node.js 版本升级
  10. java 根号x_java如和开根号
  11. v6使用手册 天正电气t20_T20电气软件官方版下载-TElecT20V6 附安装教程 - 河东下载站...
  12. VUE 批量导出、导入Excel
  13. 动态规划问题经典例题
  14. 利用广播星历解算北斗卫星位置及精度分析
  15. c语言中row是什么意思中文,row是什么意思
  16. java sequencer_UVM学习笔记--sequence和sequencer(转)
  17. 【零基础小白的华丽蜕变】Oracle WebLogic Server 14c(14.1.1.0)下载及安装
  18. CAShapeLayer和UIBezierPath
  19. (1.2)bark-ml
  20. GLU(Gated Linear Units)

热门文章

  1. [ 英语 ] 如何解决那些让人恼火的介词?
  2. 使用InvalidateRect()函数刷新窗口,屏幕闪烁
  3. 主角的超能力有哪些?
  4. android sdk工具之MonkeyRunner (实例)_小兵兵同学_新浪博客
  5. 用java实现web中闹钟小功能_Java多线程小练习,闹钟
  6. pytorch的size和shape用法
  7. Devops实现之Pipeline工作流框架 (十)
  8. python的Image模块
  9. 使用 pandas 库操作 csv读写
  10. 搭建DNS服务器的那些知识