java layout各布局_java-Layout(布局管理器)

Layout(布局管理器)

布局管理器:布局管理就是用于指定组件的 摆放位置的。每种布局管理器都有自己的摆放风格

注意:所有的布局管理器均是针对容器来使用的,包括顶层容器和中间容器。

一、布局管理器所属类包

所属类包

布局管理器名称

说明

Java.awt

FlowLayout(流式布局)

组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一行开始继续排列

Java.awt

BorderLayout(边界布局)

容器划分为东、西、南、北、中五个区域,每个区域只能放置一个组件。

Java.awt

GridLayout(网格布局

容器的空间划分成M×N列的网格区域, 每个区域只能放置一个组件。

Java.awt

CardLayout(卡片布局)

如同一叠牌,每个牌对应一个组件,但每次只能显示其中的一张牌。适用于在一个空间中防止多个组件的情况

Java.awt

GridBagLayout(网格包布局)

GridLayout的升级版,组件仍然是按照行、列放置,但是每个组件可以占据多个网格

Java.swing

BoxLayout(箱式布局)

允许在容器中纵向或者横向防止多个控件

Java.swing

SprigLayout(弹簧布局)

根据一组约束条件放置控件

空布局

不使用布局管理器,按照控件自身提供的大小、位置信息放置控件

二、容器的默认布局管理器

各容器都有默认的布局管理,见下表:

容器

默认布局方式

顶层容器

JFrame

BorderLayout(边界布局)

顶层容器

JDialog

BorderLayout(边界布局)

顶层容器

JApplet

JApplet

中间容器

JPanel

FlowLayout(流式布局)

实例1:BorderLayout(边框布局管理器)

package test;

import java.awt.BorderLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

/*

布局管理器:布局管理就是用于指定组件的 摆放位置的。

每种布局管理器都有自己的摆放风格

BorderLayout(边框布局管理器)

摆放的风格: 上北 、 下南 、 左西、 右东 , 中

BorderLayout 要注意的事项:

1. 使用Borderlayout添加组件的时候,如果没有指定组件的方位,那么默认添加到中间的位置上。

2. 使用BorderLayout的时候,如果东南西北那个方向没有对应 的组件,那么中间位置的组件就会占据其空缺的位置。

3. 窗体默认的布局管理器就是Borderlayout.

*/

package Demo;

import java.awt.BorderLayout;

/*

绝对布局:

Container.setLayout(null) 取消布局管理器

component.setBounds() 设置每个组件的位置和大小

*/

import java.awt.Container;

import javax.swing.JButton;

import javax.swing.JFrame;

@SuppressWarnings("serial")

public class demo7 extends JFrame{

String[] border = {

BorderLayout.CENTER,BorderLayout.NORTH,BorderLayout.EAST,BorderLayout.SOUTH,BorderLayout.WEST

};

String[] buttonName = {

"CENTER","NORTH","EAST","SOUTH","WEST"

};

public demo7(String title){

Container container = getContentPane();

setLayout(new BorderLayout());

for(int i=0;i

container.add(border[i],new JButton(buttonName[i]));

}

setTitle(title);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

pack();

}

public static void main(String[] args) {

// TODO Auto-generated method stub

new demo7("我的JFrame");

}

}

实例2:FlowLayout 流式布局管理器

package test;

import java.awt.FlowLayout;

import java.awt.Panel;

import javax.swing.JButton;

import javax.swing.JFrame;

/*

设置布局:

panel.setLayout(args);

args:

FlowLayout 流式布局管理器

BorderLayout 边框布局管理器

流式布局管理器(FlowLayout)

流式布局管理器要注意的事项:

1. 流式布局管理器默认情况是居中对齐的。

FlowLayout(FlowLayout.LEFT,int x, int y);

FlowLayout.LEFT 指定对齐的方式。

x:水平间距

y:垂直间距

LEFT 每一行组件都应该是左对齐的,或者0

RIGHT 每一行组件都应该是右对齐的,或者2

CENTER 每一行组件都应该是居中的,或者1

2. panel默认的局部管理器就是FlowLayout.

方法:

int getRows()

获取此布局中的行数。 默认值是1

int getColumns()

获取此布局中的列数。 默认值是1

int getHgap()

获取组件之间的水平间距。 默认值是0

int getVgap()

获取组件之间的垂直间距。默认值是0

设置

void setRows(int rows)

将此布局中的行数设置为指定值。默认值是1

void setColumns(int cols)

将此布局中的列数设置为指定值。 默认值是1

void setHgap(int hgap)

将组件之间的水平间距设置为指定值。 默认值是0

*/

public class demo2 {

public static void main(String[] args) {

// TODO Auto-generated method stub

JFrame jFrame = new JFrame("流动布局管理器");

Panel panel = new Panel();

//创建一个流式布局管理器

FlowLayout flowLayout = new FlowLayout(FlowLayout.LEFT,20,100);

//添加面板

jFrame.add(panel);

//设置布局管理器

panel.setLayout(flowLayout);

//按钮

panel.add(new JButton("按钮1"));

panel.add(new JButton("按钮2"));

panel.add(new JButton("按钮3"));

panel.add(new JButton("按钮4"));

jFrame.setSize(1000,1000);

jFrame.setLocation(100, 100);

jFrame.pack();

jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jFrame.setVisible(true);

}

}

实例3:GridLayout(表格布局管理器)

package test;

import java.awt.GridLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

/*

表格布局管理器(GridLayout)

注意的事项: 如果表格数量不够使用时,默认会多加一列。

GridLayout(4,1,5,10)

前面两个参数(4,1)是指网格的行、列数

后面两个参数(5,10)是指组件的水平、垂直间隔

(一个组件占一个网格)

方法:

int getRows()

获取此布局中的行数。 默认值是1

int getColumns()

获取此布局中的列数。 默认值是1

int getHgap()

获取组件之间的水平间距。 默认值是0

int getVgap()

获取组件之间的垂直间距。默认值是0

设置

void setRows(int rows)

将此布局中的行数设置为指定值。默认值是1

void setColumns(int cols)

将此布局中的列数设置为指定值。 默认值是1

void setHgap(int hgap)

将组件之间的水平间距设置为指定值。 默认值是0

*/

public class demo3 {

public static void main(String[] args) {

// TODO Auto-generated method stub

JFrame jFrame = new JFrame();

GridLayout gridLayout = new GridLayout(4,4,4,4);

jFrame.setLayout(gridLayout);

for(int i=0;i<16;i++){

jFrame.add(new JButton(i+""));

}

jFrame.setSize(1000,1000);

jFrame.setLocation(100, 100);

jFrame.pack();

jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jFrame.setVisible(true);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值