布局管理器

用来管理组件在容器中的布局格式,位于 java.awt 包中。
常用的布局管理器有五种:

  1. FlowLayout (流布局)
  2. BorderLayout (边界布局)
  3. GridLayout (网格布局)
  4. CardLayout (卡片布局)
  5. NullLayout(null布局)

一、FlowLayout (流布局)

特点: 组件按照 “从左到右” 的顺序流动的安排到容器中,直到占满上方的空间,则移动到下一行,继续流动。

代码实现:

package ch10;import java.awt.FlowLayout;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class FlowLayoutDemo extends JFrame{private JPanel jPanel;private JButton b1Button;private JButton b2Button;private JButton b3Button;//构造方法public FlowLayoutDemo() {super("流布局");//创建面板对象jPanel = new JPanel();//创建按钮对象b1Button = new JButton("yes");b2Button = new JButton("or");b3Button = new JButton("no");//声明一个布局对象FlowLayout f = new FlowLayout(FlowLayout.LEFT,10,15);//设置面板的布局jPanel.setLayout(f);//将按钮添加到面板中jPanel.add(b1Button);jPanel.add(b2Button);jPanel.add(b3Button);//将面板添加到窗体中this.add(jPanel);//设置窗体属性this.setSize(500,500);this.setLocation(300,300);}public static void main(String[] args) {FlowLayoutDemo fldDemo = new FlowLayoutDemo();fldDemo.setVisible(true);}}

二、BorderLayout (边界布局)

特点: 该布局允许将组件有选择的放置到容器的中、北、南、东、西部,并且是窗体框架JFrame的默认布局。

package ch10;import java.awt.BorderLayout;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class BorderLayoutDemo extends JFrame{private JPanel jPanel;private JButton b1Button,b2Button,b3Button,b4Button,b5Button;public BorderLayoutDemo() {super("边界布局");jPanel = new JPanel();b1Button = new JButton("东");b2Button = new JButton("西");b3Button = new JButton("南");b4Button = new JButton("北");b5Button = new JButton("中");//将布局设置到面板中/*BorderLayout bL = new BorderLayout();jPanel.setLayout(bL);*/jPanel.setLayout(new BorderLayout());//将按钮放置到面板指定位置jPanel.add(b1Button,BorderLayout.EAST);jPanel.add(b2Button,BorderLayout.WEST);jPanel.add(b3Button,BorderLayout.SOUTH);jPanel.add(b4Button,BorderLayout.NORTH);jPanel.add(b5Button,BorderLayout.CENTER);this.add(jPanel);this.setSize(500,500);this.setLocation(100,100);//this.方法名 表示使用本类方法}public static void main(String[] args) {BorderLayoutDemo bLayoutDemo = new BorderLayoutDemo();bLayoutDemo.setVisible(true);}}

三、 GridLayout (网格布局)

特点: 像表格一样,按行和列排列所有组件,且每个单元大小都一样,添加组件时,他们将按照从左到右,从上到下的顺序加入。

package ch10;import java.awt.GridLayout;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class GridLayoutDemo extends JFrame{private JPanel jPanel;private JButton b1Button,b2Button,b3Button,b4Button;public GridLayoutDemo() {super("网格布局");//调用有参JPanel的构造方法,直接创建一个特定布局的面板jPanel = new JPanel(new GridLayout(2,2));b1Button = new JButton("button1");b2Button = new JButton("button2");b3Button = new JButton("button3");b4Button = new JButton("button4");jPanel.add(b1Button);jPanel.add(b2Button);jPanel.add(b3Button);jPanel.add(b4Button);this.add(jPanel);this.setSize(300,200);this.setLocation(100,100);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args) {GridLayoutDemo gDemo = new GridLayoutDemo();gDemo.setVisible(true);}}

四、 CardLayout (卡片布局)

特点: 将加入的组件像卡片一样叠在一起,只能看到最上面的组件,可以调用CardLayout的一些方法,显示特定的组件。

package ch10;import java.awt.CardLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class CardLayoutDemo extends JFrame {private JPanel jPanel;private JButton b1Button,b2Button,b3Button;//创建卡片布局对象private CardLayout cLayout;public CardLayoutDemo() {super("卡片布局");//调用JPanel的有参构造方法,构造指定布局的面板cLayout = new CardLayout();jPanel = new JPanel(cLayout);b1Button = new JButton("王祺灏");b2Button = new JButton("刘琦");b3Button = new JButton("张浩卿");//组件添加到面板jPanel.add(b1Button,"1");jPanel.add(b2Button,"2");jPanel.add(b3Button,"3");//显示第二张卡片cLayout.show(jPanel,"2");this.add(jPanel);this.setSize(200,150);this.setLocation(100,100);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args) {CardLayoutDemo cDemo = new CardLayoutDemo();cDemo.setVisible(true);}}

五、NullLayout(null布局)

特点: null布局就是不采用任何布局,可以通过设置组件在容器中的位置及大小来安排位置。
注意: null布局一般用在组件位置相对固定,而且窗口不允许随意变换大小的情况。 (组件的相对位置会因为窗口大小发生变化时而发生改变。)

package ch10;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class NullLayoutDemo extends JFrame {private JPanel jPanel;private JButton b1Button,b2Button;public NullLayoutDemo() {super("空布局");jPanel = new JPanel();//设置面板布局为空jPanel.setLayout(null);b1Button = new JButton("确认");b2Button = new JButton("取消");//设置按钮大小b1Button.setBounds(30,60,60,25);b2Button.setBounds(100,60,60,25);//将按钮添加到面板jPanel.add(b1Button);jPanel.add(b2Button);//将面板添加到窗体this.add(jPanel);this.setSize(200,150);this.setLocation(100,100);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args) {NullLayoutDemo nDemo = new NullLayoutDemo();nDemo.setVisible(true);}
}

Swing图形界面 — “组件在容器中常见的五种布局(布局管理器)”相关推荐

  1. python和php互动_PHP中常见的五种设计模式

    您可能感兴趣的文章: 设计模式只是为 Java架构师准备的 - 至少您可能一直这样认为.实际上,设计模式对于每个人都非常有用.如果这些工具不是 "架构太空人" 的专利,那么它们又是 ...

  2. PHP中常见的五种设计模式

    设计模式只是为 Java架构师准备的 - 至少您可能一直这样认为.实际上,设计模式对于每个人都非常有用.如果这些工具不是 "架构太空人" 的专利,那么它们又是什么?为什么说它们在 ...

  3. uml和模式应用 pdf_总结分享:PHP中常见的五种设计模式

    设计模式不仅代表着更快开发健壮软件的有用方法,而且还提供了以友好的术语封装大型理念的方法.例如,您可以说您正在编写一个提供松散耦合的消息传递系统,也可以说你正在编写名称为 观察者 的模式. 用较小的示 ...

  4. C++ vector容器中常见的三种遍历方式

    1.迭代器 for (std::vector<int>::iterator it = vecTest.begin(); it != vecTest.end(); ++it){tempNum ...

  5. java常见的5个异常_Java中常见的五种异常

    1.ClassCastException(类转换异常) 数据类型转换错误,比如有个String temp="abc"; 如果设为(int)temp就会报错了,因为它们类型不一样,但 ...

  6. Android中常见的五种布局及特点

  7. java怎么开发图形界面_Java Swing 图形界面开发简介

    1. Swing简介 Swing 是 Java 为图形界面应用开发提供的一组工具包,是 Java 基础类的一部分. Swing 包含了构建图形界面(GUI)的各种组件,如: 窗口.标签.按钮.文本框等 ...

  8. java swing 目录,java swing图形界面开发目录

    java swing图形界面开发目录,做swing图形开发要学习哪些知识,难不难呢?请看以下的目录你就知道要学习哪些了: 目录 第1章 Java Swing概述 1 1.1 什么是Java Swing ...

  9. java swing图形界面开发 java.swing简介

    最近在看YouTube上面的视频的时候,虽然学着做了一点界面和一点可以运行的东西,但是里面用到的库文件我还是不明就里的.所以我打算在制作游戏之前,先花几天的时间大概地研究一下关于java.swing的 ...

最新文章

  1. R语言dplyr包na_if函数根据条件将数据对象替换为NA值实战
  2. maven 下载包冲突问题
  3. java--迭代(一)Iterator和Iterable接口
  4. dedecms怎么改php版本_Linux下如何安装DedeCMS?
  5. java程序二叉树_Java实现简单二叉树
  6. 【Linux系统编程】POSIX有名信号量
  7. web程序入门五(http无状态)
  8. 安卓文本编辑器php cpp,用安卓原生控件封装一个简易的富文本编辑器
  9. java 财付通支付_工商变更:马化腾卸任财付通支付科技有限公司法定代表人
  10. 【linux驱动分析】misc设备驱动
  11. [转]OPENGL中GLU和GLUT工具箱
  12. 全网最新猎豹网校-快速掌握Python项目实战
  13. 基于STM32的手势识别检测
  14. 做一行就要把一行的本质研究透
  15. Java自学教程百度云盘,疯狂加持!腾讯大佬的
  16. 电脑JAVA打开oracle太慢_oracle官网下载jdk跑不动太慢了,给出快速下载方式mac
  17. 苹果id登录_英雄联盟手游用苹果id登录显示账号异常的解决方法_英雄联盟手游...
  18. 线程池(ThreadPoolExecutor)详解
  19. ai描边工具怎么打开_AI描边工具命令讲解,教你ai描边功能实用技巧
  20. 新手利用C# 实现简单仿QQ登陆注册功能

热门文章

  1. 双拼自然码如何使用辅助码
  2. c语言开发console,c语言console.WriteLine什么意思?
  3. wifi虚拟服务器怎么设置方法,win7笔记本的虚拟热点设置方法让笔记本变成wifi无限网教程...
  4. 内容较长:软件测试面试题汇总
  5. python 任务管理引擎_GitHub - Hugh-wong/hydra: python多进程任务引擎
  6. Sharepreference 简单工具类
  7. promise黑盒内部机制
  8. 计算机上两个网络,从逻辑功能上可把计算机网络分为( )和( )两个子网。
  9. 【Python爬虫】爬取公共交通站点数据
  10. 2022年全球市场扫描声纳系统总体规模、主要生产商、主要地区、产品和应用细分研究报告