Lớp BorderLayout trong Java Swing sắp xếp các thành phần để phù hợp với 5 miền: EAST, WEST, SOUTH, NORTH và CENTER. Nó là layout mặc định của Frame hoặc Window. Mỗi khu vực (miền) chỉ có thể chứa một thành phần và mỗi thành phần trong mỗi khu vực được nhận diện bởi các hằng tương ứng là:
public static final int NORTH
public static final int SOUTH
public static final int EAST
public static final int WEST
public static final int CENTER
Cú pháp để khai báo lớp Java.awt.BorderLayout là:
public class BorderLayout extends Object implements LayoutManager2, Serializable
Nội dung chính
Lớp này kế thừa các phương thức từ các lớp sau:
java.lang.Object
Lớp BorderLayout bao gồm các trường sau:
static String AFTER_LAST_LINE: Giống PAGE_END.
static String AFTER_LINE_ENDS: Giống LINE_END.
static String BEFORE_FIRST_LINE: Giống PAGE_START.
static String BEFORE_LINE_BEGINS: Giống LINE_START.
static String CENTER: Đây là ràng buộc bố trí trung tâm (ở giữa container).
static String EAST: Ràng buộc bố trí theo hướng đông (cạnh phải của container).
static String LINE_END: Thành phần tới phần cuối của line direction cho layout
static String LINE_START: Thành phần tới phần bắt đầu của line direction cho layout
static String NORTH: Đây là ràng buộc bố trí theo hướng bắc (phần trên của container).
static String PAGE_END: Thành phần đến sau dòng cuối cùng (last line) của nội dung layout
static String PAGE_START: Thành phần tới trước dòng đầu tiên (first line) của nội dung layout.
static String SOUTH: Ràng buộc bố trí hướng nam (phần dưới của container)
static String WEST: Ràng buộc bố trí hướng tây (cạnh trái của container)
Lớp BorderLayout bao gồm các constructor sau:
BorderLayout(): Xây dựng một Border Layout mới, ở đó giữa các thành phần là không có khoảng cách.
BorderLayout(int hgap, int vgap): Xây dụng một Border Layout với các khoảng cách gap theo chiều dọc và ngang đã xác định giữa các thành phần.
Các phương thức của lớp BorderLayout
STT | Phương thức & Mô tả |
---|---|
1 | 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 Constraint đã xác định. |
2 | 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 |
3 | int getHgap() Trả về khoảng cách theo chiều ngang giữa các thành phần |
4 | float getLayoutAlignmentX(Container parent) Trả về căn chỉnh theo trục x |
5 | float getLayoutAlignmentY(Container parent) Trả về căn chỉnh theo trục y |
6 | int getVgap() Trả về khoảng cách theo chiều dọc giữa các thành phần |
7 | 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 loại bỏ |
8 | void layoutContainer(Container target) Bố trí tham số container bởi sử dụng Border Layout này |
9 | Dimension maximumLayoutSize(Container target) Trả về kích cỡ các chiều tối đa cho layout này, đã cung cấp các thành phần trong target đã cho. |
10 | Dimension minimumLayoutSize(Container target) Xác định kích cỡ tối thiểu cho target bởi sử dụng layout manager |
11 | Dimension preferredLayoutSize(Container target) Xác định kích cỡ được ưu tiên cho target bởi sử dụng layout manager, dựa trên các thành phần của container. |
12 | void removeLayoutComponent(Component comp) Xóa thành phần comp đã cho từ Border Layout này |
13 | void setHgap(int hgap) Thiết lập khoảng cách theo chiều ngang giữa các thành phần |
14 | void setVgap(int vgap) Thiết lập khoảng cách theo chiều dọc giữa các thành phần |
15 | String toString() Trả về một biểu diễn chuỗi của trạng thái Border Layout này |
Chương trình ví dụ đơn giản về lớp BorderLayout
package vn.kienthuclaptrinh.swing; import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.WindowConstants; public class BorderLayoutExam1 { JFrame frame; BorderLayoutExam1() { frame = new JFrame(); JButton b1 = new JButton("NORTH"); JButton b2 = new JButton("SOUTH"); JButton b3 = new JButton("EAST"); JButton b4 = new JButton("WEST"); JButton b5 = new JButton("CENTER"); frame.add(b1, BorderLayout.NORTH); frame.add(b2, BorderLayout.SOUTH); frame.add(b3, BorderLayout.EAST); frame.add(b4, BorderLayout.WEST); frame.add(b5, BorderLayout.CENTER); frame.setSize(400, 300); frame.setVisible(true); frame.setTitle("Ví dụ BorderLayout trong Java Swing"); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new BorderLayoutExam1(); } }
Chạy chương trình trên cho kết quả như sau:
Chương trình ví dụ khác về lớp BorderLayout
package vn.kienthuclaptrinh.swing; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.WindowConstants; public class BorderLayoutExam2 { private JFrame frame; private JLabel headerLabel; private JLabel statusLabel; private JPanel controlPanel; public BorderLayoutExam2(){ prepareGUI(); } public static void main(String[] args) { BorderLayoutExam2 demo = new BorderLayoutExam2(); demo.showBorderLayoutDemo(); } private void prepareGUI() { frame = new JFrame(); frame.setSize(400, 400); frame.setLayout(new GridLayout(3, 1)); headerLabel = new JLabel("", JLabel.CENTER); statusLabel = new JLabel("", JLabel.CENTER); statusLabel.setSize(350, 100); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent windowEvent) { System.exit(0); } }); controlPanel = new JPanel(); controlPanel.setLayout(new FlowLayout()); frame.add(headerLabel); frame.add(controlPanel); frame.add(statusLabel); frame.setVisible(true); frame.setTitle("Ví dụ BorderLayout trong Java Swing"); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } private void showBorderLayoutDemo() { headerLabel.setText("Layout in action: BorderLayout"); JPanel panel = new JPanel(); panel.setBackground(Color.darkGray); panel.setSize(300, 300); BorderLayout layout = new BorderLayout(); layout.setHgap(10); layout.setVgap(10); panel.setLayout(layout); panel.add(new JButton("Center"), BorderLayout.CENTER); panel.add(new JButton("Line Start"), BorderLayout.LINE_START); panel.add(new JButton("Line End"), BorderLayout.LINE_END); panel.add(new JButton("East"), BorderLayout.EAST); panel.add(new JButton("West"), BorderLayout.WEST); panel.add(new JButton("North"), BorderLayout.NORTH); panel.add(new JButton("South"), BorderLayout.SOUTH); controlPanel.add(panel); frame.setVisible(true); } }
Chạy chương trình trên cho kết quả như sau: