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.

Mọi người cho thể tham gia khóa học thứ 4 của vietjackteam vào cuối tháng 09/2017 do anh Nguyễn Thanh Tuyền, admin vietjack.com trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : Khóa học Java.Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Khóa học cũng đưa 200 câu hỏi phỏng vấn java trên https://www.javatpoint.com/corejava-interview-questions vào nội dung để giúp các bạn dễ dàng vượt qua kì phỏng vấn

Mọi người có thể xem demo nội dung khóa học tại địa chỉ Video demo khóa học Offline

Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Thông tin khóa học tại Khóa học Java Online trên Udemy

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.



Demo một bài giảng trong khóa học online tại vietjackteam.