**Trình quản lý bố cục** (tiếng Anh: **Layout manager**) là những thành phần phần mềm được sử dụng trong bộ công cụ widget, dùng để bố trí các thành tố điều khiển đồ họa theo vị trí tương đối của chúng mà không cần sử dụng đơn vị độ dài. Việc xây dựng bố cục thành phần theo cách này thường tự nhiên hơn so với việc xây dựng bố cục dựa trên vị trí của các thành phần theo pixel hoặc đơn vị độ dài chung, do đó, một số bộ công cụ widget phổ biến có sẵn tính năng này theo mặc định. Các bộ công cụ widget cung cấp chức năng này thường có thể phân thành hai nhóm:

* Nhóm quy định hành vi của bố cục được viết trong các container đồ họa đặc biệt. Ví dụ như XUL và bộ công cụ widget của .NET Framework (cả trong Windows Forms và XAML).
* Nhóm quy định hành vi của bố cục được viết trong trình quản lý bố cục, có thể áp dụng cho mọi container đồ họa. Ví dụ như bộ công cụ widget của Swing (một phần của Java API).

Ví dụ
-----

### XUL

Trong XUL, ví dụ như container vbox Lưu trữ 2012-02-24 tại Wayback Machine dùng để xếp các thành phần lên nhau. 

```
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window id="vbox example" title="Example"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<vbox>
  <button id="yes" label="Yes"/>
  <button id="no" label="No"/>
  <button id="maybe" label="Maybe"/>
</vbox>

</window>

```

Đoạn mã này hiển thị 3 nút (button) được xếp chồng lên nhau trong một hộp dọc (vertical box).

### XAML

Container DockPanel bố trí các thành phần con theo những đặc tính *Dock* của chúng.

```
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      WindowTitle="myDock Panel">
  <DockPanel>
      <TextBlock DockPanel.Dock="Top">Top 1</TextBlock>
      <TextBlock DockPanel.Dock="Top">Top 2</TextBlock>
      <TextBlock DockPanel.Dock="Top">Top 3</TextBlock>
      <TextBlock DockPanel.Dock="Top">Top 4</TextBlock>
  </DockPanel>
</Page>

```

Mã này hiển thị 4 khối văn bản (text block) chồng lên nhau.

### Java

Trình quản lý bố cục **`FlowLayout`** sắp xếp các thành phần theo luồng định hướng (directional flow), giống như các dòng văn bản trong một đoạn văn. Nó sắp xếp các thành phần theo chiều ngang cho đến khi không còn thành phần nào vừa nữa trên cùng một dòng, sau đó đặt chúng trên một dòng khác. Các trình quản lý bố cục khác gồm trình quản lý GridLayout sắp xếp các thành phần ở dạng lưới (grid form) và trình quản lý BorderLayout thì sắp xếp các thành phần vào năm phần của khung (frame), như: south (nam), north (bắc), west (tây), east (đông) và center (trung tâm). 

```
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.FlowLayout;
import java.awt.Container;

public class Example {
    private JFrame frame;

    public Example() {
        frame = new JFrame("FlowLayout Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT\_ON\_CLOSE);
        frame.setLayout(new FlowLayout());
        frame.add((new JButton("Button 1")));
        frame.add((new JButton("Button 2")));
        frame.add((new JButton("Button 3")));
        frame.add((new JButton("Long-Named Button 4")));
        frame.add((new JButton("5")));
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        Example ex = new Example();
    }
}

```

Mã này hiển thị 5 nút cạnh nhau trên cùng một dòng:

Ví dụ FlowLayout

Tham khảo
---------

Liên kết ngoài
--------------

* Hướng dẫn thiết lập bố cục trên trang web của Oracle (ngôn ngữ Java)
* Trình quản lý bố cục Showdown trên java.net

| * x
* t
* s
Thành tố điều khiển đồ họa |
| --- |
| Nhập lệnh | 
* Nút bấm
* Trình đơn ngữ cảnh
* Trình đơn
* Trình đơn bánh
* Thả xuống
* Adjustment handle

 |
| Nhập-xuất dữ liệu | 
* Hộp chọn
* Hộp đa hợp
* Cycle button
* Drop-down list
* Khung nhìn lưới
* Hộp danh sách
* List builder
* Radio button
* Thanh cuộn
* Slider
* Spinner
* Hộp tìm kiếm
* Hộp văn bản

 |
| Thông tin | 
* Balloon help
* Head-up display in computing
* Head-up display in video games
* Biểu tượng
* Thanh thông tin
* Nhãn
* Loading screen
* Progress indicator
	+ Thanh tiến trình
	+ Splash screen
	+ Throbber
* Thanh bên
* Thanh trạng thái
* Toast
* Tooltip

 |
| Vùng chứa | 
* Accordion
* Disclosure widget
* Khung
* Thanh trình đơn
* Panel
* Popover
* Ruy băng
* Thẻ
* Thanh công cụ
* Cửa sổ

 |
| Điều hướng | 
* Thanh địa chỉ
* Breadcrumb
* Siêu liên kết
* Khung nhìn cây
* Thanh liên kết

 |
| Cửa sổ đặc biệt | 
* Hộp giới thiệu
* Alert dialog box
* Hộp thoại
* File dialog
* Inspector window
* Modal window
* Palette window

 |
| Khái niệm liên quan | 
* Trình quản lý bố cục
* Diện mạo và cảm nhận
* Mouseover
* Bộ công cụ widget
* WIMP
* File viewer
* Graphical user interface elements

 |