Swing BorderLayout類

BorderLayout類排列組件適合五個區域:東,西,北,南和中心。每個區域只能包含一個組件,每個區域中的每個組件都由相應的常量:NORTHSOUTHEASTWESTCENTER標識。

類聲明

以下是java.awt.BorderLayout類的聲明 -

public class BorderLayout
   extends Object
      implements LayoutManager2, Serializable

字段

以下是java.awt.BorderLayout類的字段 -

  • static String AFTER_LAST_LINE - PAGE_END的同義詞。
  • static String AFTER_LINE_ENDS - LINE_END的同義詞。
  • static String BEFORE_FIRST_LINE - PAGE_START的同義詞。
  • static String BEFORE_LINE_BEGINS - LINE_START的同義詞。
  • static String CENTER - 中心佈局約束(容器的中間)。
  • static String EAST - 東部佈局約束(容器的右側)。
  • static String LINE_END - 組件位於佈局的行方向的末尾。
  • static String LINE_START - 組件位於佈局的行方向的開頭。
  • static String NORTH - 北佈局約束(容器頂部)。
  • static String PAGE_END - 組件位於佈局內容的最後一行之後。
  • static String PAGE_START - 組件位於佈局內容的第一行之前。
  • static String SOUTH - 南佈局約束(容器的底部)。
  • static String WEST - 西部佈局約束(容器的左側)。

類構造函數

編號 構造函數 描述
1 BorderLayout() 構造一個新的邊框佈局,組件之間沒有間隙。
2 BorderLayout(int hgap, int vgap) 構造具有組件之間指定間隙的邊框佈局。

類方法

編號 類方法 描述
1 void addLayoutComponent(Component comp, Object constraints) 使用指定的約束對象將指定的組件添加到佈局中。
2 void addLayoutComponent(String name, Component comp) 如果佈局管理器使用每個組件的字串,則將組件comp添加到佈局中,並將其與name指定的字串相關聯。
3 int getHgap() 返回組件之間的水準間隙。
4 float getLayoutAlignmentX(Container parent) 返回沿x軸的對齊方式。
5 float getLayoutAlignmentY(Container parent) 返回沿y軸的對齊方式。
6 int getVgap() 返回組件之間的垂直間隙。
7 void invalidateLayout(Container target) 使佈局無效,如果佈局管理器緩存了資訊,則應將其丟棄。
8 void layoutContainer(Container target) 使用此邊框佈局佈置容器參數。
9 Dimension maximumLayoutSize(Container target) 給定指定目標容器中的組件,返回此佈局的最大值。
10 Dimension minimumLayoutSize(Container target) 使用此佈局管理器確定目標容器的最小值。
11 Dimension preferredLayoutSize(Container target) 根據容器中的組件,使用此佈局管理器確定目標容器的首選大小。
12 void removeLayoutComponent(Component comp) 從此邊框佈局中刪除指定的組件。
13 void setHgap(int hgap) 設置組件之間的水準間隙。
14 void setVgap(int vgap) 設置組件之間的垂直間隙。
15 String toString() 返回此邊框佈局狀態的字串表示形式。

方法繼承

該類繼承以下類中的方法 -

  • java.lang.Object

BorderLayout示例

使用編輯器創建以下Java程式:BorderLayoutDemo.java

package com.zaixian.layout;

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

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

    public BorderLayoutDemo() {
        prepareGUI();
    }

    public static void main(String[] args) {
        BorderLayoutDemo swingLayoutDemo = new BorderLayoutDemo();
        swingLayoutDemo.showBorderLayoutDemo();
    }

    private void prepareGUI() {
        mainFrame = new JFrame("Java SWING BorderLayout示例(xuhuhu.com)");
        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("中心按鈕"), BorderLayout.CENTER);
        panel.add(new JButton("行開始"), BorderLayout.LINE_START);
        panel.add(new JButton("行結束"), BorderLayout.LINE_END);
        panel.add(new JButton("東側"), BorderLayout.EAST);
        panel.add(new JButton("西側"), BorderLayout.WEST);
        panel.add(new JButton("北側"), BorderLayout.NORTH);
        panel.add(new JButton("南側"), BorderLayout.SOUTH);

        controlPanel.add(panel);
        mainFrame.setVisible(true);
    }
}

執行上面示例代碼,得到以下結果 -

BorderLayout示例


上一篇: Swing LayoutManager介面 下一篇: Swing Menu類