Lớp BorderLayout trong Java Swing




Lớp 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. 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

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 & Miêu 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

import java.awt.*;  
import javax.swing.*;  
  
public class Border {  
JFrame f;  
Border(){  
    f=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");;  
      
    f.add(b1,BorderLayout.NORTH);  
    f.add(b2,BorderLayout.SOUTH);  
    f.add(b3,BorderLayout.EAST);  
    f.add(b4,BorderLayout.WEST);  
    f.add(b5,BorderLayout.CENTER);  
      
    f.setSize(300,300);  
    f.setVisible(true);  
}  
public static void main(String[] args) {  
    new Border();  
}  
}  

Chương trình ví dụ khác về lớp BorderLayout

package com.vietjack.gui;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SwingLayoutDemo {
   private JFrame mainFrame;
   private JLabel headerLabel;
   private JLabel statusLabel;
   private JPanel controlPanel;
   private JLabel msglabel;

   public SwingLayoutDemo(){
      prepareGUI();
   }

   public static void main(String[] args){
      SwingLayoutDemo swingLayoutDemo = new SwingLayoutDemo();  
      swingLayoutDemo.showBorderLayoutDemo();       
   }
      
   private void prepareGUI(){
      mainFrame = new JFrame("Vi du Java Swing");
      mainFrame.setSize(400,400);
      mainFrame.setLayout(new GridLayout(3, 1));

      headerLabel = new JLabel("",JLabel.CENTER );
      statusLabel = new JLabel("",JLabel.CENTER);        

      statusLabel.setSize(350,100);
      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
	        System.exit(0);
         }        
      });    
      controlPanel = new JPanel();
      controlPanel.setLayout(new FlowLayout());

      mainFrame.add(headerLabel);
      mainFrame.add(controlPanel);
      mainFrame.add(statusLabel);
      mainFrame.setVisible(true);  
   }

   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);

      mainFrame.setVisible(true);  
   }
}

layout_trong_java_swing.jsp