Module  java.desktop
软件包  java.awt

Class BorderLayout

  • All Implemented Interfaces:
    LayoutManagerLayoutManager2Serializable


    public class BorderLayout
    extends Object
    implements LayoutManager2, Serializable
    边界布局设置了一个容器,安排和调整其组件,以适应五个区域:北,南,东,西和中心。 每个区域可以含有不超过一个部件,并且通过相应的常数确定: NORTHSOUTHEASTWEST ,和CENTER 将组件添加到具有边框布局的容器时,请使用以下五个常量之一,例如:
      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());  // Same as p.add(new TextArea(), BorderLayout.CENTER); 

    此外, BorderLayout支持相对定位的常数, PAGE_STARTPAGE_ENDLINE_START ,和LINE_END 在容器中,其ComponentOrientation设定为ComponentOrientation.LEFT_TO_RIGHT ,这些常数映射到NORTHSOUTHWEST ,和EAST分别。

    对于与以前版本的兼容性, BorderLayout还包括相对定位常数BEFORE_FIRST_LINEAFTER_LAST_LINEBEFORE_LINE_BEGINSAFTER_LINE_ENDS 这些等同于PAGE_STARTPAGE_ENDLINE_STARTLINE_END分别。 为了与其他组分使用的相对定位常数一致,后一个常数是优选的。

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

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

    组件根据其优选尺寸和容器尺寸的限制布置。 NORTHSOUTH组件可以水平拉伸; EASTWEST组件可以垂直拉伸; CENTER组件可能会水平和垂直拉伸,以填补剩余的任何空间。

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

    显示BorderLayout的小程序图。 BorderLayout的每个部分都包含一个对应于其在布局中的位置的按钮,其中之一为:北,西,中心,东或南。

    该小程序的代码如下:


     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
    另请参见:
    Container.add(String, Component)ComponentOrientationSerialized Form
    • 构造方法详细信息

      • BorderLayout

        public BorderLayout​()
        构建新的边框布局,组件间没有间隙。
      • BorderLayout

        public BorderLayout​(int hgap,
                            int vgap)
        构造具有组件之间指定间隙的边框布局。 水平间隙由hgap指定,垂直间隙由vgap指定。
        参数
        hgap - 水平间隙。
        vgap - 垂直间隙。
    • 方法详细信息

      • 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)
        使用指定的约束对象将指定的组件添加到布局。 对于边界布局,约束必须是以下常量之一: NORTHSOUTHEASTWEST ,或CENTER

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

        Specified by:
        addLayoutComponent在接口 LayoutManager2
        参数
        comp - 要添加的组件。
        constraints - 指定组件添加到布局的方式和位置的对象。
        异常
        IllegalArgumentException - 如果约束对象不是字符串,或者如果它不是五个指定的常量之一。
        从以下版本开始:
        1.1
        另请参见:
        Container.add(java.awt.Component, java.lang.Object)
      • addLayoutComponent

        @Deprecated
        public void addLayoutComponent​(String name,
                                       Component comp)
        已过时。 替换为addLayoutComponent(Component, Object)
        说明从接口LayoutManager复制
        如果布局管理器使用每个组件字符串,则将组件 comp添加到布局,将其与 name指定的字符串相关联。
        Specified by:
        addLayoutComponent在接口 LayoutManager
        参数
        name - 与组件关联的字符串
        comp - 要添加的组件
      • getLayoutComponent

        public Component getLayoutComponent​(Object constraints)
        获取使用给定约束添加的组件
        参数
        constraints -所需约束的一个 CENTERNORTHSOUTHWESTEASTPAGE_STARTPAGE_ENDLINE_STARTLINE_END
        结果
        在给定位置的组件,如果位置为空, null
        异常
        IllegalArgumentException - 如果约束对象不是九个指定常量之一
        从以下版本开始:
        1.5
        另请参见:
        addLayoutComponent(java.awt.Component, java.lang.Object)
      • getLayoutComponent

        public Component getLayoutComponent​(Container target,
                                            Object constraints)
        基于目标Container的组件方向返回与给定约束位置相对应的组件。 部件与相对约束添加PAGE_STARTPAGE_ENDLINE_STARTLINE_END优先于与所述显式约束添加的组分NORTHSOUTHWEST ,和EAST Container的组件方向用于确定添加的组件的位置为LINE_STARTLINE_END
        参数
        constraints -所需的绝对位置,一个 CENTERNORTHSOUTHEASTWEST
        target -所述 Container用于获得基于目标约束位置 Container的组分的取向。
        结果
        在给定位置的组件,如果位置为空, null
        异常
        IllegalArgumentException - 如果约束对象不是五个指定常量之一
        NullPointerException - 如果目标参数为空
        从以下版本开始:
        1.5
        另请参见:
        addLayoutComponent(java.awt.Component, java.lang.Object)
      • getLayoutAlignmentX

        public float getLayoutAlignmentX​(Container parent)
        返回沿x轴的对齐方式。 这指定了组件如何相对于其他组件进行对齐。 该值应为0到1之间的数字,其中0表示原点对齐,1对齐最远离原点,0.5为中心等。
        Specified by:
        getLayoutAlignmentX在接口 LayoutManager2
        参数
        parent - 目标容器
        结果
        x轴对齐偏好
      • getLayoutAlignmentY

        public float getLayoutAlignmentY​(Container parent)
        返回沿着y轴的对齐。 这指定了组件如何相对于其他组件进行对齐。 该值应为0到1之间的数字,其中0表示原点对齐,1对齐最远离原点,0.5为中心等。
        Specified by:
        getLayoutAlignmentY在接口 LayoutManager2
        参数
        parent - 目标容器
        结果
        y轴对齐偏好
      • invalidateLayout

        public void invalidateLayout​(Container target)
        使布局无效,指示如果布局管理器已缓存信息,则应将其丢弃。
        Specified by:
        invalidateLayout在接口 LayoutManager2
        参数
        target - 目标容器
      • layoutContainer

        public void layoutContainer​(Container target)
        使用此边框布局来填充容器参数。

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

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

        Specified by:
        layoutContainer在接口 LayoutManager
        参数
        target - 要进行布局的容器。
        另请参见:
        ContainerContainer.doLayout()
      • toString

        public String toString​()
        返回此边框布局状态的字符串表示形式。
        重写:
        toStringObject
        结果
        a string representation of this border layout.