Computer >> Máy Tính >  >> Lập trình >> Java

LayoutManager là gì và các loại LayoutManager trong Java?

Trình quản lý bố cục cho phép chúng tôi kiểm soát cách sắp xếp các thành phần trực quan trong các biểu mẫu GUI bằng cách xác định kích thước và vị trí của các thành phần trong vùng chứa.

Các loại LayoutManager

Có 6 trình quản lý bố cục trong Java

  • FlowLayout :Nó sắp xếp các thành phần trong một vùng chứa giống như các từ trên một trang. Nó lấp đầy dòng trên cùng từ trái sang phải và từ trên xuống dưới . Các thành phần được sắp xếp theo thứ tự khi chúng được thêm vào, tức là các thành phần đầu tiên xuất hiện ở trên cùng bên trái, nếu vùng chứa không đủ rộng để hiển thị tất cả các thành phần, nó sẽ được bao quanh dòng. Khoảng cách dọc và ngang giữa các thành phần có thể được kiểm soát. Các thành phần có thể được căn trái, căn giữa hoặc phải.
  • BorderLayout :Nó sắp xếp tất cả các thành phần dọc theo các cạnh hoặc giữa của vùng chứa, tức là trên, dưới, phải và trái các cạnh của khu vực. Các thành phần được thêm vào trên cùng hoặc dưới cùng sẽ nhận được chiều cao ưa thích của nó, nhưng chiều rộng của nó sẽ là chiều rộng của vùng chứa và các thành phần được thêm vào bên trái hoặc bên phải sẽ nhận được chiều rộng ưa thích của nó, nhưng chiều cao của nó sẽ là chiều cao còn lại của vùng chứa. Các thành phần được thêm vào trung tâm không nhận được chiều cao hoặc chiều rộng ưa thích của nó. Nó bao phủ phần diện tích còn lại của vùng chứa.
  • GridLayout :Nó sắp xếp tất cả các thành phần trong một lưới gồm các ô có kích thước bằng nhau , thêm chúng từ bên trái sang bên phải t và từ trên xuống dưới . Chỉ một thành phần có thể được đặt trong một ô và mỗi vùng của lưới sẽ có cùng kích thước. Khi vùng chứa được thay đổi kích thước, tất cả các ô sẽ tự động được thay đổi kích thước. Thứ tự sắp xếp các thành phần trong một ô được xác định khi chúng được thêm vào.
  • GridBagLayout :Đây là một bố cục mạnh mẽ, sắp xếp tất cả các thành phần trong một lưới ô và duy trì tỷ lệ khung hình của đối tượng bất cứ khi nào vùng chứa được thay đổi kích thước. Trong bố cục này, các ô có thể có kích thước khác nhau. Nó chỉ định khoảng cách ngang và dọc nhất quán giữa các thành phần. Nó cho phép chúng tôi chỉ định căn chỉnh mặc định cho các thành phần trong cột hoặc hàng.
  • BoxLayout :Nó sắp xếp nhiều thành phần theo chiều dọc hoặc chiều ngang , nhưng không phải cả hai. Các thành phần được sắp xếp từ trái sang phải hoặc trên xuống dưới . Nếu các thành phần được căn chỉnh theo chiều ngang , chiều cao của tất cả các thành phần sẽ giống nhau và bằng các thành phần có kích thước lớn nhất. Nếu các thành phần được căn chỉnh theo chiều dọc , chiều rộng của tất cả các thành phần sẽ giống nhau và bằng các thành phần có chiều rộng lớn nhất.
  • CardLayout :Nó sắp xếp hai hoặc nhiều thành phần có cùng kích thước. Các thành phần được sắp xếp trong một boong , nơi tất cả các thẻ có cùng kích thước và thẻ hàng đầu duy nhất có thể hiển thị bất kỳ lúc nào . Thành phần đầu tiên được thêm vào trong thùng chứa sẽ được giữ ở trên cùng của boong. Khoảng cách mặc định ở các cạnh trái, phải, trên và dưới bằng 0 và các thành phần thẻ được hiển thị theo chiều ngang hoặc chiều dọc.

Ví dụ

import java.awt.*;
import javax.swing.*;
public class LayoutManagerTest extends JFrame {
   JPanel flowLayoutPanel1, flowLayoutPanel2, gridLayoutPanel1, gridLayoutPanel2, gridLayoutPanel3;
   JButton one, two, three, four, five, six;
   JLabel bottom, lbl1, lbl2, lbl3;
   public LayoutManagerTest() {
      setTitle("LayoutManager Test");
      setLayout(new BorderLayout()); // Set BorderLayout for JFrame
      flowLayoutPanel1 = new JPanel();
      one = new JButton("One");
      two = new JButton("Two");
      three = new JButton("Three");
      flowLayoutPanel1.setLayout(new FlowLayout(FlowLayout.CENTER)); // Set FlowLayout Manager
      flowLayoutPanel1.add(one);
      flowLayoutPanel1.add(two);
      flowLayoutPanel1.add(three);
      flowLayoutPanel2 = new JPanel();
      bottom = new JLabel("This is South");
      flowLayoutPanel2.setLayout (new FlowLayout(FlowLayout.CENTER)); // Set FlowLayout Manager
      flowLayoutPanel2.add(bottom);
      gridLayoutPanel1 = new JPanel();
      gridLayoutPanel2 = new JPanel();
      gridLayoutPanel3 = new JPanel();
      lbl1 = new JLabel("One");
      lbl2 = new JLabel("Two");
      lbl3 = new JLabel("Three");
      four = new JButton("Four");
      five = new JButton("Five");
      six = new JButton("Six");
      gridLayoutPanel2.setLayout(new GridLayout(1, 3, 5, 5)); // Set GridLayout Manager
      gridLayoutPanel2.add(lbl1);
      gridLayoutPanel2.add(lbl2);
      gridLayoutPanel2.add(lbl3);
      gridLayoutPanel3.setLayout(new GridLayout(3, 1, 5, 5)); // Set GridLayout Manager
      gridLayoutPanel3.add(four);
      gridLayoutPanel3.add(five);
      gridLayoutPanel3.add(six);
      gridLayoutPanel1.setLayout(new GridLayout(2, 1)); // Set GridLayout Manager
      gridLayoutPanel1.add(gridLayoutPanel2);
      gridLayoutPanel1.add(gridLayoutPanel3);
      add(flowLayoutPanel1, BorderLayout.NORTH);
      add(flowLayoutPanel2, BorderLayout.SOUTH);
      add(gridLayoutPanel1, BorderLayout.CENTER);
      setSize(400, 325);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String args[]) {
      new LayoutManagerTest();
   }
}

Đầu ra

LayoutManager là gì và các loại LayoutManager trong Java?