Giới thiệu Layout trong Java Swing




Layout nghĩa là sự bố trí sắp xếp các thành phần bên trong Container theo một phương thức nhất định. Nói cách khác, chúng ta đặt các thành phần tại một vị trí cụ thể bên trong Container. Tác vụ bố trí này được thực hiện tự động bởi LayoutManager. Nếu chúng ta không sử dụng LayoutManager thì các thành phần cũng sẽ được tự động bố trí bởi LayoutManager mặc định. Tuy nhiên, để xử lý một số lượng thành phần lớn với kích cỡ, hình dạng khác nhau và muốn chúng được bố trí theo cách bạn muốn thì việc sử dụng các LayoutManager là cần thiết.

LayoutManager được liên kết với mỗi đối tượng Container. Mỗi LayoutManager là một đối tượng của lớp mà triển khai LayoutManager Interface. Dưới đây là các Interface mà định nghĩa các tính năng của LayoutManager:

  • LayoutManager Interface

  • LayoutManager2 Interface

Giới thiệu về LayoutManager Interface

LayoutManager Interface được sử dụng để định nghĩa giao diện cho các lớp mà biết cách để bố trí các Container. Cú pháp khai báo cho java.awt.LayoutManager là:

public interface LayoutManager

LayoutManager Interface này có các phương thức sau:

void addLayoutComponent(String name, Component comp): Nếu layout manager sử dụng một chuỗi mỗi thành phần, thêm thành phần comp tới layout, liên kết nó với chuỗi được xác định bởi tên.

void layoutContainer(Container parent): Bố trí Container đã cho.

Dimension minimumLayoutSize(Container parent): Tính toán các chiều kích cỡ tối thiểu cho Container đã xác định, mà đã cung cấp các thành phần được chứa trong đó.

Dimension preferredLayoutSize(Container parent): Tính toán các chiều kích cỡ được ưu tiên cho Container đã xác định, mà đã cung cấp các thành phần được chứa trong đó.

void removeLayoutComponent(Component comp): Xóa thành phần đã cho từ layout.

Giới thiệu về LayoutManager2 Interface

LayoutManager2 Interface được sử dụng để định nghĩa giao diện cho các lớp mà biết cách bố trí các Container dựa trên một đối tượng ràng buộc Constraint. Cú pháp khai báo cho java.awt.LayoutManager2 là:

public interface LayoutManger2
   extends LayoutManager

LayoutManager2 Interface bao gồm các phương thức sau:

void addLayoutComponent(Component comp, Object constraints): Thêm thành phần comp đã cho tới layout, bởi sử dụng đối tượng ràng buộc Constraint.

float getLayoutAlignmentX(Container target): Trả về căn chỉnh theo trục x.

float getLayoutAlignmentY(Container target): Trả về căn chỉnh theo trục y.

void invalidateLayout(Container target): Vô hiệu hóa layout, chỉ rằng nếu Layout Manager đã lưu thông tin thì nó nên được loại bỏ.

Dimension maximumLayoutSize(Container target): Tính toán các chiều kích cỡ tối đa cho Container đã xác định, mà đã cung cấp các thành phần chứa trong đó.

Các lớp Layout Manager trong Java Swing

Bảng sau liệt kê danh sách các lớp được sử dụng phổ biến, bạn truy cập link để tìm hiểu chi tiết:

STT LayoutManager & Miêu tả
1 Lớp BoxLayout

Lớp BoxLayout, trong java.swing package, được sử dụng để sắp xếp các thành phần hoặc theo chiều dọc hoặc theo chiều ngang

2 Lớp BorderLayout

BorderLayout sắp xếp các thành phần để phù hợp với 5 miền: đông, tây, nam, bắc và trung tâm

3 Lớp CardLayout

CardLayout xem xét mỗi thành phần trong Container như là một card. Chỉ có một card là nhìn thấy tại một thời điểm

4 Lớp FlowLayout

FlowLayout là Layout mặc định. Nó bố trí các thành phần trong luồng định hướng (trong một line, line sau nối tiếp line trước)

5 Lớp GridLayout

GridLayout quản lý các thành phần trong lưới hình chữ nhật. Một thành phần được hiển thị trong mỗi hình chữ nhật con.

6 Lớp GridBagLayout

GridBagLayout là một lớp quản lý layout linh động. Đối tượng của GridBagLayout căn chỉnh các thành phần theo chiều dọc, ngang hoặc theo baseline của chúng mà không yêu cầu các thành phần phải có cùng kích cỡ.

7 Lớp GroupLayout

GroupLayout nhóm các thành phần theo cấu trúc thứ bậc để đặt chúng trong một Container

8 Lớp SpringLayout

SpringLayout đặt vị trí các con của Container liên kết với nó tuân theo một tập hợp các ràng buộc.