Xem mẫu
- LẬP TRÌNH JAVA
SWING LAYOUT MANAGER
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn
ĐHKHTN - 2011
- Nội dung
Flow Layout
Border Layout
Card Layout
Grid Layout
Grid Bag Layout
Box Layout
Group Layout
- Layout Manager
Một Container là một Component có thể chứa các
Component khác
– JFrame, JDialog, JScollPane, Jpanel, JDesktopPane,
JInternalFrame
getContentPane().add để thêm Component vào Container
Mỗi Container có một đối tượng Layout Manager
Layout Manager là một đối tượng quyết định cách sắp
xếp vị trí của các Component bên trong một Container.
Các Layout Manager “implements” từ interface
LayoutManager hoặc LayoutManger2.
3
- Layout Manager
Mỗi Container có một đối tượng Layout Manager mặc
định, nhưng hoàn toàn có thể gán cho Container một
đối tượng Layout Manger theo ý muốn.
Mỗi loại Layout Manager có các nguyên tắc riêng cho
việc bố trí các Component bên trong một Container.
Một Layout Manager chịu trách nhiệm bố trí các
Component được thêm vào Container và khi
Container thay đổi kích thước
Sử dụng phương thức setLayout (LayoutManager
mng) của Container để thay đổi cách bố trí các
Component bên trong nó.
4
- FlowLayout
Hình ảnh
5
- FlowLayout
Flow Layout bố trí các Component trong Container
theo dòng, từ trái sang phải theo thứ tự thêm vào.
Tạo dòng mới khi kích thước dòng còn lại không đủ
chứa Component thêm vào.
Flow Layout bố trí vị trí các Component phụ thuộc vào
kích thước của Container.
Mỗi dòng của các Component được window mặc định
canh giữa theo chiều ngang . Có thể điều chỉnh canh
trái hoặc phải
6
- FlowLayout – Phương thức thông dụng
Phương thức khởi tạo mặc định
– public FlowLayout ()
• align: FlowLayout.CENTER
• vgap: 5px, hgap: 5px
Phương thức khởi tạo có tham số
– FlowLayout (int align)
• align: canh lề
– FlowLayout.CENTER : Canh giữa
– FlowLayout.LEFT; : Canh trái
– FlowLayout.RIGHT; : Canh phải
• hgap: 5px, vgap: 5px
7
- FlowLayout – Phương thức thông dụng
Phương thức khởi tạo có tham số
– FlowLayout(int align, int vgap, int hgap)
• align : canh lề
• vgap : kích thước chiều ngang
• hgap: chiều dọc
8
- FlowLayout – Phương thức thông dụng
public void setAlignment(int align)
public void setHgap(int hgap)
public void setVgap (int vgap)
public int getAlignment()
public int getHgap ()
public int getVgap ()
9
- FlowLayout - Demo
10
- FlowLayout - Demo
package swinglayoutmanager;
1
2
3
import java.awt.FlowLayout;
4
import javax.swing.*;
5
6
public class FlowLayoutFrame extends JFrame {
7
//Các control
8
9
private JButton[] jbts;
10
//Phương thức khởi tạo
11
public FlowLayoutFrame () {
12
this.initComponents();
13
}
14
...
15
11
- FlowLayout - Demo
//Phương thức khởi tạo các thành phần
1
private void initComponents() {
2
//MainFrame
3
this.setDefaultCloseOperation(
4
WindowConstants.EXIT_ON_CLOSE);
5
this.setTitle("FlowLayout");
6
FlowLayout layout=new FlowLayout();
7
layout.setAlignment(FlowLayout.LEFT);
8
this.setLayout(layout );
9
//jbts
10
this.jbts = new JButton[45];
11
for (int i = 0; i < 45; i++) {
12
this.jbts[i] = new JButton();
13
this.jbts[i].setText(String.valueOf(i+1));
14
this.getContentPane().add(this.jbts[i]);
15
}
16
pack();
17
}
18
}
19
12
- BorderLayout
Border Layout bố trí các Component bên trong
Container theo 5 vùng:
– "North", "South", "East", "West" ,"Center".
13
- BorderLayout – Phương thức thông dụng
Phương thức khởi tạo mặc định
– public BorderLayout ()
• hgap = 0
• vgap = 0
Phương thức khởi tạo có tham số
– public BorderLayout (int hgap, int vgap)
• hgap: chiều ngang
• vgap : chiều dọc
14
- BorderLayout – Phương thức thông dụng
public void setHgap(int hgap)
public void setVgap (int vgap)
public int getHgap()
public int getVgap ()
15
- BorderLayout - Demo
16
- BorderLayout - Demo
package swinglayoutmanager;
1
2
import java.awt.BorderLayout;
3
import javax.swing.*;
4
5
public class BorderLayoutFrame extends JFrame {
6
//Các control
7
private JButton jbtNorth;
8
private JButton jbtSouth;
9
private JButton jbtEast;
10
private JButton jbtWest;
11
private JButton jbtCenter;
12
13
//Phương thức khởi tạo
14
public BorderLayoutFrame() {
15
this.initComponents();
16
}
17
17
- BorderLayout - Demo
//Phương thức khởi tạo các thành phần
1
private void initComponents() {
2
//MainFrame
3
this.setDefaultCloseOperation(
4
WindowConstants.EXIT_ON_CLOSE);
5
this.setTitle("BorderLayout");
6
BorderLayout layout = new BorderLayout();
7
this.setLayout(layout);
8
//jbtNorth
9
this.jbtNorth = new JButton("NORTH");
10
this.getContentPane().add(this.jbtNorth,
11
BorderLayout.NORTH);
12
//jbtWest
13
this.jbtWest = new JButton("WEST");
14
this.getContentPane().add(this.jbtWest,
15
BorderLayout.WEST);
16
17
18
- BorderLayout - Demo
//jbtEast
1
2 this.jbtEast = new JButton("EAST");
3 this.getContentPane().add(this.jbtEast,
4
BorderLayout.EAST);
5
//jbtSouth
6
this.jbtSouth = new JButton("SOUTH");
7
this.getContentPane().add(this.jbtSouth,
8
BorderLayout.SOUTH);
9
10 //jbtCenter
11 this.jbtCenter = new JButton("CENTER");
12
this.getContentPane().add(this.jbtCenter,
13
BorderLayout.CENTER);
14
15
pack();
16
17 }
}
19
- CardLayout
Hình ảnh
20
nguon tai.lieu . vn