1
container.setLayout(new Layout的类())

null布局

传给Layout()null参数
再setBounds(,,,,)按钮的坐标和大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package 绝对布局;
import java.awt.*;
import javax.swing.*;

public class Demo extends JFrame{
public Demo() {
setBounds(200, 200, 500, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);

Container c = getContentPane();
c.setLayout(null);//设置布局
JButton b1 = new JButton("按钮1");//新建按钮对象
JButton b2 = new JButton("按钮2");
b1.setBounds(20, 30, 80, 30);//按钮坐标,大小
b2.setBounds(100, 40, 100, 40);
c.add(b1); //添加到容器中
c.add(b2);
setVisible(true);//最后设置可见
}

public static void main(String[] args) {
new Demo();
}
}

FlowLayout

  1. c.setLayout( )new 一个FlowLayout类
  2. FlowLayout类的构造方法参数
    FlowLayout(Flowlayout.<左右对齐>, 左右间隔, 上下间隔)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 package 流布局;

import java.awt.*;
import javax.swing.*;
public class Demo extends JFrame{
public Demo() {
setBounds(300, 300, 500, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane(); //创建容器

c.setLayout(new FlowLayout(FlowLayout.LEFT,50, 20));//设置容器布局

for (int i = 0; i < 10; i++) {//添加按钮
c.add(new Button("按钮" + i + 1));
}
setVisible(true);//最后设置可见
}
public static void main(String[] args) {
new Demo();
}
}

BorderLayout

  1. 给setLayout()new一个BorderLayout类
  2. 将按钮添加到容器中,需要指定位置
    c.add(<按钮>, 位置参数)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package 边界布局;

import java.awt.*;
import javax.swing.*;
public class Demo extends JFrame{
public Demo() {
setBounds(300, 300, 300, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane();

c.setLayout(new BorderLayout());
JButton b1 = new JButton("东"),//创建按钮
b2 = new JButton("西"),
b3 = new JButton("南"),
b4 = new JButton("北"),
b5 = new JButton("中");
//添加到容器中,并将按钮指定布局位置
c.add(b1, BorderLayout.EAST);
c.add(b2, BorderLayout.WEST);
c.add(b3, BorderLayout.SOUTH);
c.add(b4, BorderLayout.NORTH);
c.add(b5, BorderLayout.CENTER);
//再创建一个按钮,覆盖原来位置
c.add(new JButton("覆盖"), BorderLayout.CENTER);

setVisible(true);
}
public static void main(String[] args) {
new Demo();
}
}

GridLayout(网格布局)

  1. 给setlayout()new一个GridLayout类。
    参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Demo extends JFrame{
public Demo() {
setBounds(200, 200, 300, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);

Container c = getContentPane();
c.setLayout(new GridLayout(4, 5, 20, 20));//创建网格布局,4行5列,元素间距
for (int i = 0; i < 20; i++) {
c.add(new JButton("按钮" + (i+1)));
}
setVisible(true);
}
public static void main(String[] args) {
new Demo();
}
}