82
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
Layout
manager:
quản
lý
cách
trình
bày
của
các
GUI
components
trong
một
Container
Các
layout
manager
FlowLayout
BorderLayout
CardLayout
GridLayout
GridBagLayout
Sử
dụng
phương
thức
setLayout()
của
một
Container
để
thay
đổi
layout
83
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
FlowLayout
Là
layout
mặc
định
cho
Applet
và
Panel
Các
thành
phần
được
sắp
xếp
từ
trái
sang
phải,
trên
xuống
dưới
Các
hàm
khởi
tạo
FlowLayout()
FlowLayout(int
alignment)
Alignment
có
thể
là
FlowLayout.CENTER,
LEFT,
RIGHT
FlowLayout(int,
int,
int)
84
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
FlowLayout
import java.awt.*;
import java.awt.event.*;
public class
F
lowLayoutTest
extends
Frame implements WindowListener {
public
FlowLayoutTest(String
title){
super(title);
addWindowListener(this);
setLayout(new
FlowLayout(FlowLayout.
CENTER,
20,
50));
for(int
i = 1; i<15; i++)
add(new
Button("Button"+i));
setS
ize(575,
300);
setVisible(true);
}
public
void
windowClosing(WindowEvent
e){
dispose();
System.exit(0);
}
85
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
FlowLayout
public
void
windowActivated(WindowEvent
e){}
public
void
windowClosed(WindowEvent
e){}
public
void
windowIconified(WindowEvent
e){}
public
void
windowDeiconified(W
i
ndowEvent
e){}
public
void
windowDeactivated(Wi
ndowEvent
e){}
public
void
windowOpened(WindowEvent
e){}
public static
void
main(String[]
args)
{
FlowLayoutTest
f
t =
new
FlowLayoutTest("F
l
owLayout
Test");
}
}
86
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
FlowLayout
87
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
BorderLayout
Là
layout
mặc
định
cho
Frame,
Window,
Dialog
Các
thành
phần
được
sắp
xếp
trên
5
khu
vực
khác
nhau
•
NORTH
–
Đặt
ở
đỉnh
của
conta
i
ner
.
•
EAST
–
Đặt
ph
í
a
bên
phả
i
của
conta
i
ner
.
x`
•
SOUTH
–
Đặt
ở
phía
dướ
i
của
conta
i
ner
.
•
WEST
–
Đặt
ph
í
a
bên
trá
i
của
conta
i
ner
.
•
CENTER
–
Đặt
ở
giữa
của
conta
i
ner
.
Để
thêm
một
thành
phần
vào
vùng
‘North’
Button
b1=new
Button(“North
Button”);
//
khai
báo
thành
phần
setLayout(new
BorderLayout());
//
thiết
lập
layout
add(b1,BorderLayout.NORTH);
//
thêm
thành
phần
vào
layout
Khởi
tạo:
BorderLayout(),
BorderLayout(int,
int)
88
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
BorderLayout
89
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
CardLayout
Tự
tìm
hiểu
trong
API
Documentation
90
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
GridLayout
Chia
Container
thành
các
ô
lưới
bằng
nhau
Các
Component
được
đặt
trong
các
ô
Mỗi
ô
lưới
nên
chứa
ít
nhất
một
thành
phần
Ví
dụ
GridLayout
l1
=
new
GridLayout(4,
3)
Nế
u
new
GridLayout(0,3) ngh
ĩ
a là ô
c
ó 3
cộ
t,
số
hàng là b
ất
kỳ
Không
được
sử
d
ụ
ng
new
GridLayout(0,0);
Các hàm
khở
i
tạ
o:
GridLayout(int), GridLayout(int, int), GridLayout(int, int, int
,int)
91
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
GridLayout
import java.awt.*;
import java.awt.event.*;
public class GridLayoutTest e
xtends
Frame implements WindowListener {
public GridLa
youtTest(String
title){
super(title);
addWindowListener(this);
setLayout(new
GridLayout(0,
3,
5,
10));
for(int
i = 1; i<15; i++)
add(new
Button("Button"+i));
pack();
setVisible(true);
}
92
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
GridLayout
public
void
windowClosing(WindowEvent
e){
dispose();
System.exit(0);
}
public
void
windowActivated(WindowEvent
e){}
public
void
windowClosed(WindowEvent
e){}
public
void
windowIconified(WindowEvent
e){}
public
void
windowDeiconified(W
i
ndowEvent
e){}
public
void
windowDeactivated(Wi
ndowEvent
e){}
public
void
windowOpened(WindowEvent
e){}
public static
void
main(String[]
args)
{
GridLayoutTest
f
t =
new
GridLayoutTest(“GridLayout Test");
}
}
93
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
GridLayout
94
Q
Q
u
u
ả
ả
n
n
l
l
ý
ý
t
t
r
r
ì
ì
n
n
h
h
b
b
à
à
y
y
GridBagLayout
Tự
đọc