边界布局管理器把容器的的布局分为五个位置:CENTER、EAST、WEST、NORTH、SOUTH。依次对应为:上北(NORTH)、下南(SOUTH)、左西(WEST)、右东(EAST),中(CENTER),如下图所示。

特征:

l  可以把组件放在这五个位置的任意一个,如果未指定位置,则缺省的位置是CENTER。

l  南、北位置控件各占据一行,控件宽度将自动布满整行。东、西和中间位置占据一行;若东、西、南、北位置无控件,则中间控件将自动布满整个屏幕。若东、西、南、北位置中无论哪个位置没有控件,则中间位置控件将自动占据没有控件的位置。

l  它是窗口、框架的内容窗格和对话框等的缺省布局。

常见的构建函数和方法

构造方法摘要
BorderLayout() 构造一个组件之间没有间距(默认间距为0像素)的新边框布局。
BorderLayout(int hgap, int vgap)  构造一个具有指定组件(hgap为横向间距,vgap为纵向间距)间距的边框布局。
方法摘要
int getHgap() 返回组件之间的水平间距。
int getVgap() 返回组件之间的垂直间距。
void removeLayoutComponent(Component comp) 从此边框布局中移除指定组件。
void setHgap(int hgap) 设置组件之间的水平间距。
void setVgap(int vgap)  设置组件之间的垂直间距。

实例1:

// BorderLayoutDemo.Java

import javax.swing.*;

import java.awt.*;

public class BorderLayoutDemo extends JFrame {

    public BorderLayoutDemo() { // 构造函数,初始化对象值

        // 设置为边界布局,组件间横向、纵向间距均为5像素

        setLayout(new BorderLayout(5, 5));

        setFont(new Font("Helvetica", Font.PLAIN, 14));

        getContentPane().add("North", new JButton("North")); // 将按钮添加到窗口中

        getContentPane().add("South", new JButton("South"));

        getContentPane().add("East", new JButton("East"));

        getContentPane().add("West", new JButton("West"));

        getContentPane().add("Center", new JButton("Center"));

    }

    public static void main(String args[]) {

        BorderLayoutDemo f = new BorderLayoutDemo();

        f.setTitle("边界布局");

        f.pack();

        f.setVisible(true);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        f.setLocationRelativeTo(null); // 让窗体居中显示

    }

}

程序执行结果如下所示:

依次注释掉东、西、南、北和中间位置添加按钮的语句,保留其它的的语句体会一下边框布局的特点。

如果想要更复杂的布局可以在东、西、南、北和中间位置添加中间容器,中间容器中再进行布局,并添加相应的组件,已达到复制补间的效果。

实例2:在中间位置中添加9个按钮。

// BorderLayoutDemo1.java

import javax.swing.*;

import java.awt.*;

public class BorderLayoutDemo1 extends JFrame {

    JPanel p = new JPanel();

    public BorderLayoutDemo(){
setLayout(new BorderLayout(5,5)); setFont(new Font("Helvetica", Font.PLAIN, 14)); getContentPane().add("North", new JButton("North")); getContentPane().add("South", new JButton("South")); getContentPane().add("East", new JButton("East")); getContentPane().add("West", new JButton("West")); //设置面板为流式布局居中显示,组件横、纵间距为5个像素 p.setLayout(new FlowLayout(1,5,5)); //使用循环添加按钮,注意每次添加的按钮对象名称都是b //但按钮每次均是用new新生成的,所有代表不同的按钮对象。 for(int i=1;i<10;i++){
//String.valueOf(i),将数字转换为字符串 JButton b=new JButton(String.valueOf(i)); p.add(b); //将按钮添加到面板中 } getContentPane().add("Center",p); //将面板添加到中间位置 } public static void main(String args[]) { BorderLayoutDemo1 f = new BorderLayoutDemo1(); f.setTitle("边界布局"); f.pack(); // 让窗体自适应组建大小 f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setLocationRelativeTo(null); // 让窗体居中显示 } }

程序执行效果:

04 Java图形化界面设计——布局管理器之BorderLayout(边界布局)的更多相关文章

  1. 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...

  2. 三十三、Java图形化界面设计——布局管理器之null布局(空布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有 ...

  3. 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...

  4. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

  5. 二十七、Java图形化界面设计——容器(JFrame)

    摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的, ...

  6. Java图形化界面设计——容器(JFrame)

    Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

  7. Java 图形化界面设计(GUI)实战练习(代码)

    关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...

  8. 01 Java图形化界面设计——容器(JFrame)

    程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构,现在就进入java图形化界面编程. 一.Jav ...

  9. 02 Java图形化界面设计——中间容器(Jpanel)

    上一篇讲解了Jframe顶层容器,例子中生成了一个空的窗体,在实际编程过程中,一般很少将文本框.按钮等组件直接放在顶层容器中进行布局,大多数时候是通过布局管理器结合中间容器对组件进行布局设置. 1.  ...

随机推荐

  1. const 与 指针

    #include <iostream> using namespace std; int main() { // 第一种.使指针不能改动对象的值.注:此时指针能够指向另外的对象 int i ...

  2. Less is better than never

    很多时候,在正确的做一件事之前,我们总会尝试一些笨办法或者白费一些力气: 很多时候,即使在正确的做一件事,由于这事情并非一日之功,而没有收到立竿见影的效果: 之后,我们的内心便容易动摇,怀疑,甚至想要 ...

  3. redis学习笔记——RDB和AOF持久化二

    上一篇对RDB的源码分析是比较多的,但是AOF持久化执行进行了一些理论上的分析和概念的说明.本来想自己偷一些懒,将上篇文章中最后所给链接的AOF实现代码随便过一过算了,后来也就是在过的过程中发现自己这 ...

  4. centos 6.5 安装 cx_Oracle 5.12 步骤 ,使用oracle instantclient12.1

    新建sh文件 内容如下: 以su用户执行这个文件 #!/bin/bash # INSTALL ORACLE INSTANT CLIENT # ############################# ...

  5. IFA Basics

    The inverted-F antenna is shown in Figure 1. While this antenna appears to be a wire antenna, after ...

  6. 2 自己编写:AppDelegate,CCApplication,CCApplicationProtocol

    1 CCApplicationProtocol.h /* * CCApplicationProtocol.h * *  Created on: 2014年10月19日 *      Author: t ...

  7. maven 动态版本 aliyun阿里云Maven仓库地址——加速你的maven构建

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. jedis连接集群

    /**        * 集群版        */       @Test       public  void JedisJiuQun()       {           HashSet< ...

  9. 360极速浏览器无法正确getHours

    开发了一个显示时间的功能. 功能是这样的,首先从数据库中读取时间,然后显示到前端页面上. 数据库中:2017-08-10 14:25:35.867 前端显示:2017-08-10T14:25:35.8 ...

  10. LNMP架构四

    php-fpm的pool(连接池) 我们查看php的进程时,会发现,在最后一个pool的选项,而这个就是我们在php-fpm配置文件里写的一个连接池. [root@bogon linux.com]# ...