Module java.desktop
Package java.awt

Class BorderLayout

java.lang.Object
java.awt.BorderLayout
所有已实现的接口:
LayoutManager, LayoutManager2, Serializable

public class BorderLayout extends Object implements LayoutManager2, Serializable
边界布局(BorderLayout)布局容器,安排和调整其组件以适应五个区域:北、南、东、西和中心。每个区域最多只能包含一个组件,并由相应的常量标识:NORTHSOUTHEASTWESTCENTER。向具有边界布局的容器添加组件时,请使用这五个常量之一,例如:
    Panel p = new Panel();
    p.setLayout(new BorderLayout());
    p.add(new Button("Okay"), BorderLayout.SOUTH);
 
作为一种便利,BorderLayout将缺少字符串规范解释为常量CENTER
    Panel p2 = new Panel();
    p2.setLayout(new BorderLayout());
    p2.add(new TextArea());  // 相当于 p.add(new TextArea(), BorderLayout.CENTER);
 

此外,BorderLayout支持相对定位常量,PAGE_STARTPAGE_ENDLINE_STARTLINE_END。在将ComponentOrientation设置为ComponentOrientation.LEFT_TO_RIGHT的容器中,这些常量分别映射到NORTHSOUTHWESTEAST

为了与之前版本兼容,BorderLayout还包括相对定位常量BEFORE_FIRST_LINEAFTER_LAST_LINEBEFORE_LINE_BEGINSAFTER_LINE_ENDS。这些与PAGE_STARTPAGE_ENDLINE_STARTLINE_END分别等效。为了与其他组件使用的相对定位常量保持一致,更推荐使用后者。

混合使用绝对和相对定位常量可能导致不可预测的结果。如果同时使用两种类型,相对常量将优先。例如,在将组件添加到具有LEFT_TO_RIGHT方向的容器中时,如果同时使用NORTHPAGE_START常量,只有PAGE_START会被布局。

注意:目前,BorderLayout不支持垂直方向。容器的ComponentOrientation上的isVertical设置不受尊重。

组件根据其首选大小和容器大小的约束进行布局。NORTHSOUTH组件可以在水平方向上拉伸;EASTWEST组件可以在垂直方向上拉伸;CENTER组件可以在水平和垂直方向上拉伸以填充剩余空间。

以下是使用BorderLayout布局管理器布置的小程序中的五个按钮的示例:

一个小程序的布局图,展示了BorderLayout。BorderLayout的每个部分包含一个按钮,对应于布局中的位置,其中包括:North、West、Center、East或South。

此小程序的代码如下:


 import java.awt.*;
 import java.applet.Applet;

 public class buttonDir extends Applet {
   public void init() {
     setLayout(new BorderLayout());
     add(new Button("North"), BorderLayout.NORTH);
     add(new Button("South"), BorderLayout.SOUTH);
     add(new Button("East"), BorderLayout.EAST);
     add(new Button("West"), BorderLayout.WEST);
     add(new Button("Center"), BorderLayout.CENTER);
   }
 }
 

自版本:
1.0
另请参阅:
  • Field Details

    • NORTH

      public static final String NORTH
      北侧布局约束(容器的顶部)。
      另请参阅:
    • SOUTH

      public static final String SOUTH
      南侧布局约束(容器的底部)。
      另请参阅:
    • EAST

      public static final String EAST
      东侧布局约束(容器的右侧)。
      另请参阅:
    • WEST

      public static final String WEST
      西侧布局约束(容器的左侧)。
      另请参阅:
    • CENTER

      public static final String CENTER
      中心布局约束(容器的中间)。
      另请参阅:
    • BEFORE_FIRST_LINE

      public static final String BEFORE_FIRST_LINE
      PAGE_START的同义词。为了与之前版本兼容而存在。推荐使用PAGE_START。
      自版本:
      1.2
      另请参阅:
    • AFTER_LAST_LINE

      public static final String AFTER_LAST_LINE
      PAGE_END的同义词。为了与之前版本兼容而存在。推荐使用PAGE_END。
      自版本:
      1.2
      另请参阅:
    • BEFORE_LINE_BEGINS

      public static final String BEFORE_LINE_BEGINS
      LINE_START的同义词。为了与之前版本兼容而存在。推荐使用LINE_START。
      自版本:
      1.2
      另请参阅:
    • AFTER_LINE_ENDS

      public static final String AFTER_LINE_ENDS
      LINE_END的同义词。为了与之前版本兼容而存在。推荐使用LINE_END。
      自版本:
      1.2
      另请参阅:
    • PAGE_START

      public static final String PAGE_START
      组件放置在布局内容的第一行之前。对于西方、从左到右和从上到下的方向,这等效于NORTH。
      自版本:
      1.4
      另请参阅:
    • PAGE_END

      public static final String PAGE_END
      组件放置在布局内容的最后一行之后。对于西方、从左到右和从上到下的方向,这等效于SOUTH。
      自从:
      1.4
      参见:
    • LINE_START

      public static final String LINE_START
      组件位于布局的行方向开头。对于西方的从左到右和从上到下的方向,这等同于WEST。
      自从:
      1.4
      参见:
    • LINE_END

      public static final String LINE_END
      组件位于布局的行方向末尾。对于西方的从左到右和从上到下的方向,这等同于EAST。
      自从:
      1.4
      参见:
  • Constructor Details

    • BorderLayout

      public BorderLayout()
      构造一个没有组件之间间隙的新边界布局。
    • BorderLayout

      public BorderLayout(int hgap, int vgap)
      使用指定的组件之间间隙构造边界布局。水平间隙由hgap指定,垂直间隙由vgap指定。
      参数:
      hgap - 水平间隙。
      vgap - 垂直间隙。
  • Method Details

    • getHgap

      public int getHgap()
      返回组件之间的水平间隙。
      返回:
      组件之间的水平间隙
      自从:
      1.1
    • setHgap

      public void setHgap(int hgap)
      设置组件之间的水平间隙。
      参数:
      hgap - 组件之间的水平间隙
      自从:
      1.1
    • getVgap

      public int getVgap()
      返回组件之间的垂直间隙。
      返回:
      组件之间的垂直间隙
      自从:
      1.1
    • setVgap

      public void setVgap(int vgap)
      设置组件之间的垂直间隙。
      参数:
      vgap - 组件之间的垂直间隙
      自从:
      1.1
    • addLayoutComponent

      public void addLayoutComponent(Component comp, Object constraints)
      将指定的组件添加到布局中,使用指定的约束对象。对于边界布局,约束必须是以下常量之一:NORTHSOUTHEASTWESTCENTER

      大多数应用程序不直接调用此方法。当使用相同参数类型的Container.add方法将组件添加到容器时,将调用此方法。

      指定者:
      addLayoutComponent 在接口 LayoutManager2
      参数:
      comp - 要添加的组件。
      constraints - 一个指定如何以及在哪里将组件添加到布局的对象。
      抛出:
      IllegalArgumentException - 如果约束对象不是字符串,或者不是五个指定常量之一。
      自从:
      1.1
      参见:
    • addLayoutComponent

      @Deprecated public void addLayoutComponent(String name, Component comp)
      Deprecated.
      replaced by addLayoutComponent(Component, Object).
      从接口复制的描述: LayoutManager
      如果布局管理器使用每个组件的字符串,将组件comp添加到布局中,并将其与由name指定的字符串关联。
      指定者:
      addLayoutComponent 在接口 LayoutManager
      参数:
      name - 要与组件关联的字符串
      comp - 要添加的组件
    • removeLayoutComponent

      public void removeLayoutComponent(Component comp)
      从此边界布局中移除指定的组件。当容器调用其removeremoveAll方法时,将调用此方法。大多数应用程序不直接调用此方法。
      指定者:
      removeLayoutComponent 在接口 LayoutManager
      参数:
      comp - 要移除的组件。
      参见:
    • getLayoutComponent

      public Component getLayoutComponent(Object constraints)
      获取使用给定约束添加的组件
      参数:
      constraints - 所需的约束,为CENTERNORTHSOUTHWESTEASTPAGE_STARTPAGE_ENDLINE_STARTLINE_END之一
      返回:
      给定位置的组件,如果位置为空则返回null
      抛出:
      IllegalArgumentException - 如果约束对象不是九个指定常量之一
      自从:
      1.5
      参见:
    • getLayoutComponent

      public Component getLayoutComponent(Container target, Object constraints)
      根据目标Container的组件方向,返回与给定约束位置对应的组件。使用相对约束PAGE_STARTPAGE_ENDLINE_STARTLINE_END添加的组件优先于使用显式约束NORTHSOUTHWESTEAST添加的组件。使用Container的组件方向确定使用LINE_STARTLINE_END添加的组件的位置。
      参数:
      target - 用于根据目标Container的组件方向获取约束位置的Container
      constraints - 所需的绝对位置,为CENTERNORTHSOUTHEASTWEST之一
      返回:
      给定位置的组件,如果位置为空则返回null
      抛出:
      IllegalArgumentException - 如果约束对象不是五个指定常量之一
      NullPointerException - 如果目标参数为null
      自从:
      1.5
      参见:
    • getConstraints

      public Object getConstraints(Component comp)
      获取指定组件的约束
      参数:
      comp - 要查询的组件
      返回:
      指定组件的约束,如果组件为null或不在此布局中则返回null
      自从:
      1.5
      参见:
    • minimumLayoutSize

      public Dimension minimumLayoutSize(Container target)
      使用此布局管理器确定target容器的最小尺寸。

      当容器调用其getMinimumSize方法时,将调用此方法。大多数应用程序不直接调用此方法。

      指定者:
      minimumLayoutSize 在接口 LayoutManager
      参数:
      target - 进行布局的容器。
      返回:
      布局指定容器的子组件所需的最小尺寸。
      参见:
    • preferredLayoutSize

      public Dimension preferredLayoutSize(Container target)
      使用此布局管理器基于容器中的组件确定target容器的首选大小。

      大多数应用程序不直接调用此方法。当容器调用其getPreferredSize方法时,将调用此方法。

      指定者:
      preferredLayoutSize 在接口 LayoutManager
      参数:
      target - 要进行布局的容器。
      返回值:
      指定容器的子组件布局的首选尺寸。
      参见:
    • maximumLayoutSize

      public Dimension maximumLayoutSize(Container target)
      返回指定目标容器中组件的最大尺寸。
      指定者:
      maximumLayoutSize 在接口 LayoutManager2
      参数:
      target - 需要进行布局的组件
      返回值:
      容器的最大尺寸
      参见:
    • getLayoutAlignmentX

      public float getLayoutAlignmentX(Container parent)
      返回沿 x 轴的对齐方式。这指定组件希望相对于其他组件对齐的方式。该值应为介于 0 和 1 之间的数字,其中 0 表示沿原点对齐,1 表示与原点最远对齐,0.5 表示居中对齐,依此类推。
      指定者:
      getLayoutAlignmentX 在接口 LayoutManager2
      参数:
      parent - 目标容器
      返回值:
      x 轴的对齐偏好
    • getLayoutAlignmentY

      public float getLayoutAlignmentY(Container parent)
      返回沿 y 轴的对齐方式。这指定组件希望相对于其他组件对齐的方式。该值应为介于 0 和 1 之间的数字,其中 0 表示沿原点对齐,1 表示与原点最远对齐,0.5 表示居中对齐,依此类推。
      指定者:
      getLayoutAlignmentY 在接口 LayoutManager2
      参数:
      parent - 目标容器
      返回值:
      y 轴的对齐偏好
    • invalidateLayout

      public void invalidateLayout(Container target)
      使布局失效,表示如果布局管理器有缓存信息,则应丢弃该信息。
      指定者:
      invalidateLayout 在接口 LayoutManager2
      参数:
      target - 目标容器
    • layoutContainer

      public void layoutContainer(Container target)
      使用此边界布局对容器进行布局。

      该方法实际上会重新调整指定容器中的组件,以满足此 BorderLayout 对象的约束。如果有的话,NORTHSOUTH 组件将分别放置在容器的顶部和底部。然后,WESTEAST 组件将分别放置在左侧和右侧。最后,CENTER 对象将放置在中间的任何剩余空间中。

      大多数应用程序不会直接调用此方法。当容器调用其 doLayout 方法时,将调用此方法。

      指定者:
      layoutContainer 在接口 LayoutManager
      参数:
      target - 要进行布局的容器。
      参见:
    • toString

      public String toString()
      返回此边界布局状态的字符串表示形式。
      覆盖:
      toString 在类 Object
      返回值:
      此边界布局的字符串表示形式。