1、邊界布局(BorderLayout)
2、流式布局(FlowLayout)
3、網格布局(GridLayout)
4、盒子布局(BoxLaYout)
5、空布局(null)
還有其他兩種布局,分別是GridBagLayout(網格包布局)、CardLayout(卡片布局)
注意:JFrame和JDialog默認布局為BorderLayout,JPanel和Applet默認布局為FlowLayout
邊界布局示例代碼:
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
32
|
import
java.awt.BorderLayout;
import
javax.swing.JButton;
import
javax.swing.JFrame;
public
class
BorderLayoutExample
extends
JFrame{
JButton btn1=
new
JButton(
"東"
);
JButton btn2=
new
JButton(
"南"
);
JButton btn3=
new
JButton(
"西"
);
JButton btn4=
new
JButton(
"北"
);
JButton btn5=
new
JButton(
"中"
);
BorderLayoutExample(){
init();
this
.setTitle(
"邊界布局"
);
this
.setResizable(
true
);
this
.setSize(
200
,
200
);
this
.setLocationRelativeTo(
null
);
this
.setDefaultCloseOperation(EXIT_ON_CLOSE);
this
.setVisible(
true
);
}
void
init(){
this
.setLayout(
new
BorderLayout(
10
,
5
));
//默認為0,0;水平間距10,垂直間距5
this
.add(btn1,BorderLayout.EAST);
this
.add(btn2,BorderLayout.SOUTH);
this
.add(btn3,BorderLayout.WEST);
this
.add(btn4,BorderLayout.NORTH);
this
.add(btn5,BorderLayout.CENTER);
}
public
static
void
main(String args[]){
new
BorderLayoutExample();
}
}
|
運行結果:
流式布局示例代碼:
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
32
|
import
java.awt.FlowLayout;
import
javax.swing.JButton;
import
javax.swing.JFrame;
public
class
FlowLayoutExample
extends
JFrame{
JButton btn1=
new
JButton(
"one"
);
JButton btn2=
new
JButton(
"two"
);
JButton btn3=
new
JButton(
"three"
);
JButton btn4=
new
JButton(
"four"
);
JButton btn5=
new
JButton(
"five"
);
FlowLayoutExample(){
init();
this
.setTitle(
"流式布局"
);
this
.setResizable(
true
);
this
.setSize(
200
,
200
);
this
.setLocationRelativeTo(
null
);
this
.setDefaultCloseOperation(EXIT_ON_CLOSE);
this
.setVisible(
true
);
}
void
init(){
this
.setLayout(
new
FlowLayout(FlowLayout.LEFT,
10
,
5
));
//默認為居中;水平間距10,垂直間距5
this
.add(btn1);
this
.add(btn2);
this
.add(btn3);
this
.add(btn4);
this
.add(btn5);
}
public
static
void
main(String args[]){
new
FlowLayoutExample();
}
}
|
運行結果:
網格布局示例代碼:
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
32
|
import
java.awt.GridLayout;
import
javax.swing.JButton;
import
javax.swing.JFrame;
public
class
GridLayoutExample
extends
JFrame{
JButton btn1=
new
JButton(
"one"
);
JButton btn2=
new
JButton(
"two"
);
JButton btn3=
new
JButton(
"three"
);
JButton btn4=
new
JButton(
"four"
);
JButton btn5=
new
JButton(
"five"
);
GridLayoutExample(){
init();
this
.setTitle(
"表格布局"
);
this
.setResizable(
true
);
this
.setSize(
300
,
200
);
this
.setLocationRelativeTo(
null
);
this
.setDefaultCloseOperation(EXIT_ON_CLOSE);
this
.setVisible(
true
);
}
void
init(){
this
.setLayout(
new
GridLayout(
2
,
3
,
10
,
5
));
//默認為1行,n列;2行3列,水平間距10,垂直間距5
this
.add(btn1);
this
.add(btn2);
this
.add(btn3);
this
.add(btn4);
this
.add(btn5);
}
public
static
void
main(String args[]){
new
GridLayoutExample();
}
}
|
運行結果:
盒子布局示例代碼:
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
32
33
34
35
36
|
import
javax.swing.Box;
import
javax.swing.BoxLayout;
import
javax.swing.JButton;
import
javax.swing.JFrame;
public
class
BoxLaYoutExample
extends
JFrame{
JButton btn1=
new
JButton(
"one"
);
JButton btn2=
new
JButton(
"two"
);
JButton btn3=
new
JButton(
"three"
);
JButton btn4=
new
JButton(
"four"
);
JButton btn5=
new
JButton(
"five"
);
BoxLaYoutExample(){
init();
this
.setTitle(
"表格布局"
);
this
.setResizable(
true
);
this
.setSize(
300
,
200
);
this
.setLocationRelativeTo(
null
);
this
.setDefaultCloseOperation(EXIT_ON_CLOSE);
this
.setVisible(
true
);
}
void
init(){
this
.setLayout(
new
BoxLayout(
this
.getContentPane(),BoxLayout.X_AXIS));
//可以使用Box容器代替
//Box box = new Box(BoxLayout.Y_AXIS);box.add(btn...);box.add(creat..);
this
.add(btn1);
this
.add(btn2);
this
.getContentPane().add(Box.createHorizontalStrut(
10
));
//采用x布局時,添加固定寬度組件隔開
//this.getContentPane().add(Box.createVerticalStrut(5)); //采用y布局時,添加固定高度組件隔開
this
.add(btn3);
this
.add(btn4);
this
.add(btn5);
}
public
static
void
main(String args[]){
new
BoxLaYoutExample();
}
}
|
運行結果:
空布局示例代碼:
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
32
33
34
35
36
|
import
javax.swing.JButton;
import
javax.swing.JFrame;
public
class
NullLayoutExample
extends
JFrame{
JButton btn1=
new
JButton(
"one"
);
JButton btn2=
new
JButton(
"two"
);
JButton btn3=
new
JButton(
"three"
);
JButton btn4=
new
JButton(
"four"
);
JButton btn5=
new
JButton(
"five"
);
NullLayoutExample(){
init();
this
.setTitle(
"空布局"
);
this
.setResizable(
true
);
this
.setSize(
300
,
300
);
this
.setLocationRelativeTo(
null
);
this
.setDefaultCloseOperation(EXIT_ON_CLOSE);
this
.setVisible(
true
);
}
void
init(){
this
.setLayout(
null
);
btn1.setBounds(
10
,
0
,
100
,
50
);
//x坐標10,y坐標0,組件寬100,高50
btn2.setBounds(
20
,
50
,
100
,
50
);
btn3.setBounds(
30
,
100
,
100
,
50
);
btn4.setBounds(
40
,
150
,
100
,
50
);
btn5.setBounds(
50
,
200
,
100
,
50
);
this
.add(btn1);
this
.add(btn2);
this
.add(btn3);
this
.add(btn4);
this
.add(btn5);
}
public
static
void
main(String args[]){
new
NullLayoutExample();
}
}
|
運行結果: