BorderLayout
類排列元件適合五個區域:東,西,北,南和中心。每個區域只能包含一個元件,每個區域中的每個元件都由相應的常數:NORTH
,SOUTH
,EAST
,WEST
和CENTER
標識。
以下是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
使用編輯器建立以下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);
}
}
執行上面範例程式碼,得到以下結果 -