Swing BorderLayout類

2019-10-16 22:10:53

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.yiibai.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範例(tw511.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示例