1.FlowLayout 流式布局
组件按加入的先后顺序从左向右排序,一行排满了之后自动转到下一行,每行组件都居中
组件的对齐方式:可以使用带参数align的构造函数FlowLayout(int align)
align的取值为:LEFT、RIGHT、CENTER(通常默认)
以上常数是静态变量,可以直接类名引用
JFrame w = new JFrame("第一个窗体");
Container contentPane = w.getContentPane();
contentPane.setLayout(new FlowLayout()); //默认在center
contentPane.setLayout(new FlowLayout(FlowLayout.LEFT)); //左对齐
指定组件的对齐方式及之间的水平和垂直间隔:FlowLayout(int align, int hgap, int vgap)
import javax.swing.*;
import java.awt.*;
public class demo {
public static void main(String[] args) {
JFrame w = new JFrame("第一个窗体");
w.setBounds(100,200,800,800);
//容器
Container contentPane = w.getContentPane();
//流式布局
contentPane.setLayout(new FlowLayout(FlowLayout.LEFT));
//组件
JButton bt_1 = new JButton("按钮1");
contentPane.add(bt_1);
JButton bt_2 = new JButton("按钮2");
contentPane.add(bt_2);
JButton bt_3 = new JButton("按钮3");
contentPane.add(bt_3);
w.setVisible(true);
}
}
效果图:
2.BorderLayout 边界式布局
将容器内的空间简单的分为东、西、南、北、中五个区域,每次加入一个组件时,应指明放在哪个区域中。如果某个区域没有加入组件,该区域被其他组件占用。超过5个组件时,应用其他布局管理器
5个区域分别为:NORTH、SOUTH、WEST、EAST、CENTER
前四个可用PAGE_START、PAGE_END、LINE_STRAT、LINE_END代替
import javax.swing.*;
import java.awt.*;
public class demo {
public static void main(String[] args) {
JFrame w = new JFrame("第一个窗体");
w.setBounds(100,200,800,800);
//容器
Container contentPane = w.getContentPane();
//边界布局
contentPane.setLayout(new BorderLayout());
JButton bt_1 = new JButton("按钮1");
contentPane.add(bt_1,BorderLayout.NORTH); //或者用PAGE_START
JButton bt_2 = new JButton("按钮2");
contentPane.add(bt_2,BorderLayout.SOUTH); //PAGE_END
JButton bt_3 = new JButton("按钮3");
contentPane.add(bt_3,BorderLayout.WEST); //LINE_START
JButton bt_4 = new JButton("按钮4");
contentPane.add(bt_4,BorderLayout.EAST); //LINE_END
w.setVisible(true);
}
}
效果图:
3.GridLayout 网格式布局
组件放入网格的顺序:先占行再占列
当某个网格中不需要放置组件时,可以用空标签 add(new Label () ) 填入,以保证下一个组件能够正确放入下一个网格中
构造函数:
GridLayout( int row, int cols ) 指定行、列
GridLayout( int row, int cols, int hgap, int vgap ) 指定行、列、列间隔、行间隔
import javax.swing.*;
import java.awt.*;
public class demo {
public static void main(String[] args) {
JFrame w = new JFrame("第一个窗体");
//w.setTitle("第一个窗体"); 设置名称
w.setBounds(100,200,800,800);
//容器
Container contentPane = w.getContentPane();
//网格布局
contentPane.setLayout(new GridLayout(3,1));
//特殊容器
JPanel p1 = new JPanel();
p1.setBackground(Color.black);
/*或者用RGB表示
p1.setBackground(new Color(201,39,133));
*/
contentPane.add(p1);
JPanel p2 = new JPanel();
p2.setBackground(Color.BLUE);
contentPane.add(p2);
JPanel p3 = new JPanel();
p3.setBackground(Color.CYAN);
contentPane.add(p3);
w.setVisible(true);
}
}
效果图: