流布局(FlowLayout)默认的JApplet,JPanel,JScrollPane

流布局是相对比较简单的一种布局管理器,也是最常用的布局管理器。在流布局中放置控件时,将按照控件的添加顺序,依次将控件从左到右进行摆放,并且在一行的最后会进行自动换行放置 。在一行中,控件是默认居中放置的。

布局管理器也是通过构造器来创建的。流布局是通过FlowLayout 类来创建,FlowLayout类具有三种构造器。首先是无参构造器, 使用无参构造器能够创建一个默认的以居中对齐方式,控件间水 平和垂直间距为5个像素的流布局。

FlowLayout类还具有一个需要整型参数的构造器,使用该构造器能够创建一个指定对齐方式的流布局管理器,它的控件间水平和垂直间距仍然是默认的5个像素。流布局管理器的对齐方式如下所示。

  • LEFT 左对齐方式
  • CENTER 居中对齐方式
  • RIGHT 右对齐方式
  • LEADING 控件与容器开始边对齐
  • TRAILING

构造函数:

  1. FlowLayout(),生成一个默认的FlowLayout布局。默认情况下,组件居中,间隙为5个像素。
  2. FlowLayout(int aligment),设定每珩的组件的对齐方式。alignment取值可以为FlowLayout.LEFT,FlowLayout.CENTER,FlowLayout.RIGHT
  3. FlowLayout(int aligment,int horz, int vert),设定对齐方式,并设定组件的水平间距horz和垂直间距vert,用超类Container的方法setLayout()为容器设定布局。例如,代码setLayout(new FlowLayout())为容器设定 FlowLayout布局。将组件加入容器的方法是add(组件名)。

常用的函数:
getAlignment方法和setAlignment方法分别获取和设置流布局管理器的对齐方式。 getHgap方法和setHgap方法分别获取和设置流布局管理器中控件和控件之间的水平间距。getVgap方法和setVgap方法分别获取和 设置流布局管理器中控件和控件之间的垂直间距。

import javax.swing.*;
import java.awt.*;/*** Created by Chenjiabing on 2017/4/5.*/
public class BuJu {public static void main(String args[]){JFrame frame=new JFrame();FlowLayout flowLayout=new FlowLayout(FlowLayout.LEFT);JPanel panel=new JPanel(flowLayout);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setBounds(100,100,500,400);flowLayout.setHgap(20);  //设置水平间距flowLayout.setVgap(20); //控件之间的垂直间距for(int i=0;i<6;i++){JButton button=new JButton("按钮");panel.add(button);}frame.getContentPane().add(panel);frame.setVisible(true);}}

网格布局(GridLayout)

  • 网络布局也是一种比较常见的布局管理器。使用网格布局管理器后,会将所有的控件尽量按照给出的行数和列数来排列,同时网格布局管理器也会对控件进行尺寸的调整,使所有的控件具有相同的尺寸。在网格布局中,也会尽量使使用的空间成矩形的形式来显示。当窗体发生大小变化时,所有的空间也将自动改变大小来填充窗体。
  • 网格布局是通过GridLayout类来创建的。GridLayout类具有三个构造器,使用无参构造器将创建具有默认行和默认列的网格布局。在创建网格布局管理器时最常用的就是具有两个整型参数的构造器,第一个参数表示网格布局管理器的行数,第二个参数表示网格布局管理器的列数。还有一个具有四个参数的构造器,除了可以定义行数和列数外,还可以定义控件间水平间距和垂直间距。
  • GridLayout类中还定义了一些方法来对创建的网格布局进行操作 。getRows方法和setRows方法分别是获取和设置网格布局的行数。getColumns方法和setColumns方法分别是获取和设置网格布局 的列数。getHgap方法和setHgap方法分别是获取和设置网格布局 中控件间水平间距。getVgap方法和setVgap方法分别是获取和设 置网络布局中的控件间垂直间距。

构造函数:

  1. GridLayout(),生成一个单列的GridLayout布局。默认情况下,无间隙。
    1.GridLayout(int row,int col),设定一个有行row和列`col的GridLayout布局。
  2. GridLayout(int row,int col,int horz,int vert),设定布局的行数和列数、组件的水平间距和垂直间距

代码大概和上面的设置一样,这里注意的是,网格布局是以行为基准的,如果定义的控件多了或者少了,不会改变行的数量,会根据情况改变列的数量

边框布局(BorderLayout)默认的是JWindowJFrame,JDialog

  • 上面学习的流布局和网格布局具有很多相似的地方,但是边框布局就和他们存在很大的不同。在使用边框布局时,通常都会由程序员来为控件指定在容器中的位置。边框布局将容器分为五个部分,包括东南西北中五部分。在每一个部分中只能放置一个控件 ,所以如果控件超过五个将不能完全显示。在使用边框布局时需 要注意的是,当容器的大小发生变化时,四周的控件是不会发生变化的,只有中间的控件将发生变化。
  • 边框布局是通过BorderLayout类创建的。BorderLayout类具有两个构造器,一个是无参构造器,另一个是指定控件间间距的构造器,通常使用无参构造器来创建边框布局管理器。
  • 在前面将控件添加到容器中都是通过add方法,将控件作为add方法的参 数来进行添加的。但是在向边框布局容器中添加控件时,这样是不完全 的。在向边框布局容器中添加控件是使用具有两个参数的add方法。其中 第一个参数表示要添加的控件,第二个参数表示要添加到边框布局中的 哪一个位置。边框布局的位置表示是通过常量来表示的,具体常量如下所示
  • NORTH 容器顶部
  • SOUTH 容器底部
  • WEST 容器左边
  • EAST 容器右边
  • CENTER 容器的中央

构造函数:

  1. BorderLayout(),生成一个默认的BorderLayout布局。默认情况下,没有间隙。
  2. BorderLayout(int horz,int vert),设定组件之间的水平间距和垂直间距。

注意这里还有一些常用的方法,就是设置水平和垂直的间距,上面已经赘述过了,这里就不再详说了

空布局(null)

空布局就是没有使用布局管理器,在空布局的情况下将根据控件的自身信息来为控件指定位置。这就使得控件的布局更加灵活,与此同时给开发人员带来了更大的工作量。

空布局是不需要使用类来创建的,只需要在程序指定布局管理器 为null。将控件添加到空布局容器中时,仍然是使用add方法。因 为这里使用的是空布局管理器,所以在添加控件之前,要对控件 进行设置操作。设置操作是通过setBounds方法来完成的, setBounds方法的基本语法格式如下所示。

public void setBounds(int x,int y,int width,int height);

其中x和y表示的是控件最左上侧的坐标,从而也固定了该控件的 位置。widthheight表示的是空间的宽度和高度,从而也指定了
控件的大小。

示例代码:

>frame.setLayout(null);//布局管理器设置为nullJLabel label = new JLabel("First Name:");label.setBounds(20, 20, 100, 20);//四个参数分别是x,y坐标和label的宽和高JTextField textField = new JTextField();textField.setBounds(124, 25, 100, 20);frame.add(label);frame.add(textField);

JFrame布局讲解相关推荐

  1. android基础入门布局讲解(2)

    一.LinearLayout(线性布局): LinearLayout是一行或列只能放置一个控件的先行布局,现在看一个实例: activity_main.xml : <LinearLayout x ...

  2. 快应用采坑与flex布局讲解

    快应用之flex布局 在我们常用的布局中有display + position + float进行布局,但是这些布局或多或少都有些麻烦(虽然我最喜欢用position,哈哈啥都能干).但是由于快应用只 ...

  3. CSS布局讲解-float浮动布局使用

    我们在讲解float之前,需要大家理解一个东西-标准文档流 什么是标准文档流呢?宏观地讲,我们的web页面和photoshop等设计软件有本质的区别:web页面的制作,是个"流", ...

  4. JFrame布局之BorderLayout、FlowLayout、GridLayout

    BorderLayout(边框布局) 构造方法: BorderLayout();构造一个组件间没有间距的新边框布局 BorderLayout(int hgap, int vgap);构造一个组件间有指 ...

  5. jquery开关灯案例_全屋开关插座布局讲解,自己规划怕遗漏,手把手教你,很详细...

    开关插座是装修内重要的一环,然而也最容易被忽视.装修完住进来后才发现插口不够用,插座被家具挡住,想改还得砸墙,没办法只能用拖线板.然而,满屋都是拖线板,乱糟糟的,看着就惹人烦,还容易绊倒人,有安全隐患 ...

  6. Matplotlib进阶教程:布局讲解

    在后台回复[阅读书籍] 即可获取python相关电子书~ Hi,我是山月. 今天来给大家介绍下Matplotlib的布局部分~ 01 自定义图形布局 可以创建axes的网格状组合的方法: 1)subp ...

  7. React Native基础入门教程:初步使用Flexbox布局

    一.长度的单位 在开始任何布局之前,让我们来首先需要知道,在写React Native组件样式时,长度的不带单位的,它表示"与设备像素密度无关的逻辑像素点". 这个怎么理解呢? 我 ...

  8. js实现简单好玩儿的放大镜个人讲解

    逻辑模块(布局) 1.首先对于页面的布局要有一个粗略的思想 <!DOCTYPE html> <html> <head lang="en">< ...

  9. HTML——flex布局

    学习flex布局的知识要点 flex盒子的布局原理 flex布局的常用属性 flex布局体验 与传统布局相比: 传统布局: 兼容性好,但布局繁琐,有局限性,不能很好的在移动端完成布局. flex弹性布 ...

最新文章

  1. 数据依赖症:当今AI领域的核心风险
  2. pythongui登录界面密码显示_用python写一个带有gui界面的密码生成器
  3. 为什么TCP建立连接需要三次握手
  4. 字符在utf-8,gbk,gb2312,iso8859-1下的编码实验
  5. springmvc @PathVariable注解进行传参操作
  6. SSH(Struts2+Hibernate+Spring)开发策略
  7. 超牛逼的异步协程爬虫
  8. 服务器水冷系统仿真,水冷漫谈(三)——水冷散热器仿真方法
  9. [bzoj2850]巧克力王国_KD-Tree
  10. Rviz教程系列第一章之Markers
  11. Cesium 已知两点,计算以一个点为圆心,将另一个点旋转一定度数后的新点的坐标/position_A绕position_B逆时针旋转angle度(角度)得到新点 function rotatedPo
  12. 使用Matlab绘制LFP锂离子扩散动态示意图
  13. 出租司机微软上MBA课 精辟理论让其月入1万6
  14. 《Web前端技术H5+CSS3》笔记--第一章 HTML基础[云图智联]
  15. 信念、信仰、理想、梦想
  16. 万兆网络传输速度测试_用万兆网卡测试超五类网线传输速度,颠覆你的认知
  17. USB数据端子 type-A/B/C
  18. 三级管的三种工作状态
  19. 深度学习——核心思想
  20. 解决:2003-Cant connect to MySQL server on **** 以及use near ‘IDENTIFIED BY ‘*****‘ WITH GRANT OPTION‘ at

热门文章

  1. 查看linux的系统信息
  2. PRU-ICSS简析
  3. python subprocess.Popen的使用
  4. Matlab强化学习——部署策略
  5. js中FileReader对象入门-fileReader中的事件
  6. Samba服务器配置(实例解析)
  7. 模拟实现memmove
  8. Ubuntu12.10 下安装搜狗输入法、Google拼音、双拼、五笔输入法
  9. 视频教程-C++ Qt5进阶之复杂控件自定义2-C/C++
  10. 数据结构之哈夫曼树的基本知识