布局管理器
- BorderLayout
- FlowLayout 流式布局
- GridLayout
布局管理器
Swing 组件不能单独存在,必须放置于容器中,而组件在容器中的位置和尺寸是由布局管理器来决定的
Swing工具在AWT的基础上提供了8种布局管理器
名称 | 解释 |
BorderLayout | 边缘布局管理器 |
BoxLayout | 箱式布局管理器 |
CardLayout | 卡片布局管理器 |
FlowLayout | 流式布局管理器 |
GridBagLayout | 网格包布局管理器 |
GridLayout | 网格布局管理器 |
GroupLayout | 分组布局管理器 |
SpringLayout | 弹性布局管理器 |
BorderLayout
是一种较为复杂的布局方式,它将容器划分为5个区域,分别是页头,页尾,行首,行尾,中部,向BorderLayout布局管理器的容器中添加组件时,需要使用add(Component comp,Object constraints)方法,其中参数 comp 表示要添加的组件,constraints 指定将组件添加到布局中的位置,它是一个Object类型,在传参时可以使用BorderLayout类提供的五个常量设置组件位置,它们分别是:
PAGE_START
PAGE_END
LINE_START
LINE_END
CENTER
e.g:
import java.awt.*;
import javax.swing.*;
public class Gui {
public static void main(String[]arge)
{
Gui gui = new Gui();
gui.createGui();
}
private void createGui()
{
//创建并设置JFrame 容器窗口
JFrame f = new JFrame("JFrameTest");
f.setSize(500,500);
f.setLocation(600, 300); // 设置窗体在界面出现的位置
JButton but1 = new JButton("pag_start");
JButton but2 = new JButton("pag_end");
JButton but3 = new JButton("line_start");
JButton but4 = new JButton("line_end");
JButton but5 = new JButton("center");
f.add(but1,BorderLayout.PAGE_START);
f.add(but2,BorderLayout.PAGE_END);
f.add(but3,BorderLayout.LINE_START);
f.add(but4,BorderLayout.LINE_END);
f.add(but5,BorderLayout.CENTER);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
上述表示方位的词也可用
NORTH
SOUTH
EAST
WEST
CENTER
替换
FlowLayout 流式布局
是最简单的布局管理器,在这种布局下,容器会将组件按照添加顺序从左到右放置,当到达容器的边界时,会自动将组件放到下一行的开始位置这些组件可以按左对齐,居中对齐(默认方式)或右对齐的方式排列。FlowLayout类有三个构造方法
名称 | 解释 |
FlowLayout() | 默认居中对齐,水平,垂直间距默认为5个单位 |
FlowLayout(int align) | 指定组件相对于容器的对齐方式,水平,垂直间距默认为5个单位 |
FlowLayout(int align, int hgap, int vgap) | 指定组件的对齐方式和水平,垂直间距 |
参数align 决定组件在每行中相对于容器边界的对齐方式,分别为左对齐,右对齐,居中对齐,可以使用该类中提供的常量
FlowLayout.LEFT
FlowLayout.RIGHT
FlowLayout.CENTER
参数 hgap 和 参数 vgap 分别设定组件之间的水平和垂直间距,可以填入一个任意数值
e.g:
import java.awt.*;
import javax.swing.*;
public class Gui {
public static void main(String[]arge)
{
Gui gui = new Gui();
gui.createGui();
}
private void createGui()
{
//创建并设置JFrame 容器窗口
JFrame f = new JFrame("FlowLayout");
//所有组件左对齐,水平间距为20,垂直间距为30
f.setLayout(new FlowLayout(FlowLayout.LEFT,20,30));
f.setSize(500,500);
f.setLocation(600, 300); // 设置窗体在界面出现的位置
JButton but1 = new JButton("1");
JButton but2 = new JButton("2");
JButton but3 = new JButton("3");
JButton but4 = new JButton("4");
JButton but5 = new JButton("5");
f.add(but1);
f.add(but2);
f.add(but3);
f.add(but4);
f.add(but5);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
GridLayout
使用纵横线将容器分成n行m列大小相等的网格,每个网格中可以添加一个组件,添加到容器中的组件首先放置在第1行第一列(左上角)的网格中然后在第一行的网格中从左到右依次放置其他组件,行满后,继续在下一行中从左到右来放置组件
三个构造方法:
名称 | 解释 |
GridLayout() | 默认只有一行,每个组件占一列 |
GridLayout(int rows,int cols) | 指定容器的行数和列数 |
GridLayout(int rows,int cols, int hgap, int vgap) | 指定容器的行数和列数以及组件之间的水平,垂直间距 |
参数 rows 表示行数,cols代表列数,hgap 和 vgap 规定窗格之间水平和垂直方向的间距
e.g:
import java.awt.*;
import javax.swing.*;
public class Gui {
public static void main(String[]arge)
{
Gui gui = new Gui();
gui.createGui();
}
private void createGui()
{
//创建并设置JFrame 容器窗口
JFrame f = new JFrame("FlowLayout");
//所有组件左对齐,水平间距为20,垂直间距为30
f.setLayout(new GridLayout(3,3));
f.setSize(500,500);
f.setLocation(600, 300); // 设置窗体在界面出现的位置
JButton but1 = new JButton("1");
JButton but2 = new JButton("2");
JButton but3 = new JButton("3");
JButton but4 = new JButton("4");
JButton but5 = new JButton("5");
f.add(but1);
f.add(but2);
f.add(but3);
f.add(but4);
f.add(but5);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}