- 面板
- 流布局管理器
- 网格布局管理器
- 边界布局管理器
今天我们先创建一个窗体,再创建一个容器,容器使用的是一个3行1列的网格布局管理器,然后我们在容器中添加不同布局的面板来看一下效果
1、首先我们来填充容器的第一行,我们创建一个流布局去填充

package cm.test.demo9;import java.awt.*;import javax.swing.*;public class JPanelTest extends JFrame {public JPanelTest() {Container c=getContentPane();//创建一个窗体必备的玩意——容器c.setLayout(new GridLayout(3, 1));//把整个容器设置成3行1列的网格布局JPanel p1=new JPanel(new FlowLayout());//创建第一个面板,并让他使用流布局管理器String btn[]=new String[10];for(int i=0;i<btn.length;i++) {p1.add(new JButton("我是按钮"+(i+1)+"号"));//为每一个按钮赋名字,并且生成JButton对象,然后添加到面板p1中}c.add(p1);//把面板p1添加到容器中setBounds(100, 100, 300, 300);setVisible(true);}public static void main(String[] args) {new JPanelTest();}
}

输出结果:

我们改变窗体大小,按钮的布局也会跟着变化,如图

在上面的例子中,我们是在一个窗体中创建了一个面板,这个面板使用流布局管理器,我们的容器使用的是3行1列的网格布局(注意是这个面板使用流布局管理器,而不是容器使用流布局管理器,当你改成容器使用流布局管理器的话,我们这个具体每个面板内的内容就不是流布局,我们必须还得再把面板设置成流布局)

2、接下来我们再来填充容器的第二行,我们创建一个3行2列的网格布局去填充

package cm.test.demo9;import java.awt.*;import javax.swing.*;public class JPanelTest extends JFrame {public JPanelTest() {Container c=getContentPane();//创建一个窗体必备的玩意——容器c.setLayout(new GridLayout(3, 1));//把整个容器设置成3行1列的网格布局JPanel p1=new JPanel(new FlowLayout());//创建第一个面板,并让他使用流布局管理器String btn[]=new String[10];for(int i=0;i<btn.length;i++) {p1.add(new JButton("我是按钮"+(i+1)+"号"));//为每一个按钮赋名字,并且生成JButton对象,然后添加到面板p1中}c.add(p1);//把面板p1添加到容器中JPanel p2=new JPanel(new GridLayout(3, 2));//创建第二个面板,并且让他使用一个网格布局管理器,网格大小为3行2列String btn2[]=new String[10];for(int i=0;i<btn2.length;i++) {p2.add(new JButton("我是按钮"+(i+1)+"号"));}c.add(p2);//把面板p2添加到容器中setBounds(100, 100, 300, 300);setVisible(true);}public static void main(String[] args) {new JPanelTest();}
}

输出结果:

因为我们面板1(最上面的)是使用的流布局管理器,所以他的整体布局会随着窗体的大小变化而变化,而我们的面板2(中间的)是使用的网格布局管理器,所以它整体的布局不会随着窗体的大小变化而变化。每一个网格的位置都一定固定了。

3、接下来我们再来填充容器的第三行,我们创建一个边界布局去填充

package cm.test.demo9;import java.awt.*;import javax.swing.*;public class JPanelTest extends JFrame {public JPanelTest() {Container c=getContentPane();//创建一个窗体必备的玩意——容器c.setLayout(new GridLayout(3, 1));//把整个容器设置成2行1列的网格布局//创建第一个面板,并让其使用流布局管理器JPanel p1=new JPanel(new FlowLayout());//创建第一个面板,并让他使用流布局管理器String btn[]=new String[10];for(int i=0;i<btn.length;i++) {p1.add(new JButton("我是按钮"+(i+1)+"号"));//为每一个按钮赋名字,并且生成JButton对象,然后添加到面板p1中}c.add(p1);//把面板p1添加到容器中//创建第二个面板,并让其使用网格布局管理器JPanel p2=new JPanel(new GridLayout(3, 2));//创建第二个面板,并且让他使用一个网格布局管理器,网格大小为3行2列String btn2[]=new String[10];for(int i=0;i<btn2.length;i++) {p2.add(new JButton("我是按钮"+(i+1)+"号"));}c.add(p2);//把面板p2添加到容器中//创建第三个面板,并让其使用边界布局管理器JPanel p3=new JPanel(new BorderLayout());//新建面板并让其使用边界布局管理器JButton centerButton=new JButton("我是中央军区");//创建按钮,并为其赋一个名字JButton northButton=new JButton("我是北部军区");JButton southButton=new JButton("我是南部军区");JButton westButton=new JButton("我是西部军区");JButton easterButton=new JButton("我是东部军区");p3.add(centerButton, BorderLayout.CENTER);//把按钮添加到面板3的指定位置p3.add(northButton, BorderLayout.NORTH);p3.add(southButton, BorderLayout.SOUTH);p3.add(westButton, BorderLayout.WEST);p3.add(easterButton, BorderLayout.EAST);c.add(p3);//把面板p3添加到容器中setBounds(100, 100, 300, 300);setVisible(true);}public static void main(String[] args) {new JPanelTest();}
}

输出结果:

边界布局管理器和网格布局管理器一样,他们中的每一个组件的相对位置都不会随着窗体大小的变化而变化
注意:
1、我们一定要区分开容器的布局和面板的布局,容器的布局是大类,它控制着每一个面板的排放位置,而面板的布局是小类,它控制的是我们面板内部的排放位置
2、只有使用流布局管理器的时候,各个组件的大小才不会变化,但是组件的相对位置会发生变化;其他布局管理器中组件的大小都会随着窗体的大小变化而变化,但是组件的相对位置不会发生变化。这在以后用到文本框的时候就有所体会了
面板和布局管理器就暂时先写到这里,关于面板的其他内容再在其他文章中写。

Java学习之面板与布局管理器相关推荐

  1. JAVA桌面UI编程之布局管理器

    布局管理器 为了跨平台java引入了布局管理器来管理界面,JAVA一共有6种布局管理器,下面是介绍 BorderLayout 界面分东西南北中5个方向,最多只能显示5个控件,默认放入中间,下面的程序将 ...

  2. Java可视化编程,基于布局管理器的UI设计

    在<事件驱动模型>讲述了如何将用户与功能实现代码联系到一起.怎么样便于用户理解和符合用户的使用习惯? 本篇还是就此问题作分析,站在用户角度上分析UI各组件倒底该如何设计呈现. 优秀的UI会 ...

  3. java -- GUI程序设计之无布局管理器布局

    无布局管理器布局 要采用无布局管理器布局,首先要取消Swing默认的布局管理器,否则布局方法不会生效.其方法是调用容器的setLayout方法,并将布局管理器设置为null.取消默认的布局管理器之后, ...

  4. Java GridBagLayout(网格包布局管理器)

    概述 GridBagLayout(网格包布局管理器)是在网格基础上提供复杂的布局,是最灵活. 最复杂的布局管理器.GridBagLayout 不需要组件的尺寸一致,允许组件扩展到多行多列.每个 Gri ...

  5. Qt学习(九)—— 布局管理器

    目录 水平/垂直/网格布局 水平布局 垂直布局 网格布局 addWidget() addStretch() 没有布局的界面不仅不美观,窗口中的内容也难以对窗口的大小进行自适应,因此我们还需要学习Qt中 ...

  6. JAVA布局管理器导包_在 Java 中,要使用布局管理器,必须导入下列( )包。_计算机网络基础答案_学小易找答案...

    [单选题]详图索引符号中的分子编号4代表( ). [单选题]MCS - 51 单片机的 CPU 主要的组成部分为( ) [判断题]路由器工作在物理层,其实现路径选择和寻址的功能.( ); [单选题]禅 ...

  7. Java Swing布局管理器(详解版)

    在使用 Swing 向容器添加组件时,需要考虑组件的位置和大小.如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器中添加.这样虽然能够灵活控制组件的位置,实现却非常麻烦 ...

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

    GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求 ...

  9. 【Java】Java中GUI之布局管理器

    [概念] 布局管理器:是对容器中的元素进行布局管理,按照一定的规则将容器里面的元素或组件进行排放. [分类] 1.FlowLayout:流式布局管理器 2.BorderLayout:边框布局管理器 3 ...

最新文章

  1. miniz库简介及使用
  2. mysql中lock_mysql中的锁lock
  3. sftp取代ftp的之后的权限设置
  4. OpenCASCADE绘制测试线束:数据交换命令之XDE 属性命令
  5. 深入理解Java虚拟机——java内存区域与内存溢出异常(一)
  6. 字体--Ubuntu手记之系统配置
  7. 23种设计模式之命令模式
  8. html-表单的应用
  9. 2020 年热门编程语言的发展方向
  10. mysql分页查询sql语句_mysql 分页查询的sql语句
  11. 解读微信团队的七个价值观
  12. caj怎么转word文档
  13. Skype、MSN/Live Messenger、Lync全面整合
  14. ibm服务器硬盘raid检测,IBM 3650 服务器做的RAID5,两块硬盘亮黄灯,但是系统正常,更换...
  15. 三台路由器两台计算机华为,两台华为路由器桥接设置方法
  16. 数据分析pandas使用
  17. 微型计算机的英文简写是,电脑英文简写?
  18. 基于Hexo搭建Next主题博客
  19. 使用kinect2.0做动作识别和重量颜色识别
  20. miniui不显示textbox边框_280Hz超高刷率IPS面板 电竞显示器越来越疯狂了

热门文章

  1. Deppin系统 Liunx显示器分辨率异常解决方法
  2. arcgis desktop 10.1 license manager无法启动问题解决
  3. 【js类库AngularJs】解决angular+springmvc的post提交问题
  4. 【实践】58同城本地服务推荐系统演进
  5. 深度学习福利入门到精通第三讲——VGGNet模型
  6. 原生xgboost与sklearn里的xgboost
  7. oracle数据库连接违反,Oracle 数据库连接的一些坑
  8. java string hash变量_java基础(六)-----String性质深入解析
  9. python数据库管理软件_数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接 - Python社区...
  10. 后置增强this advice advises no methods_增强消防意识 提高消防能力 重庆天一新城小学积极参加消防技能比赛活动...