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<border.length;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);
}
}
今天的文章java-Layout(布局管理器)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31633.html