JAVA图形界面(GUI)之布局管理器

原创 2016年01月01日 15:32:04

一个友好的读者界面是一款软件成功的关键因素之一。布局管理器就是用来管理读者的界面。摆放的效果直接影响到界面是否美观。布局管理器通过布局管理类来对各种读者组件进行管理。
使用布局管理器,不仅可以有序的排列组件,而且当窗体发生变化时,布局管理器很根据新版面来适配窗口大小。
如果设计时未指定组件的布局管理器,则使用默认布局管理器。默认布局管理器层次关系如图所示:
这里写图片描述

下面为大家介绍几种常用的布局管理器。

BorderLayout(边框布局)

BorderLayout是定义在AWT包中的布局管理器。BorderLayout把容器简单的划分为东、西、南、北、中5个区域,当使用该布局时,要指明组件添加在哪个区域。若为指明则默认加入到中间区域。每个区域只能加入一个组件,后加入的组件会覆盖前面一个。

构造方法

方法名 说明
BorderLayout() 构造一个组件之间没有间距的新边框布局
BorderLayout(int hgap, int vgap) 构造一个具有指定组件间距的边框布局

下面通过一个示例来演示BorderLayout的使用

使用示例

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * BorderLayout示例
 * 
 * @author jianggujin
 *
 */
public class BorderLayoutDemo
{
   public static void main(String[] args)
   {
      JFrame frame = new JFrame("BorderLayoutDemo");
      frame.setBounds(500, 200, 300, 300);
      frame.setLayout(new BorderLayout(10, 10));
      frame.add(new JButton("北"), BorderLayout.NORTH);
      frame.add(new JButton("东"), BorderLayout.EAST);
      frame.add(new JButton("南"), BorderLayout.SOUTH);
      frame.add(new JButton("西"), BorderLayout.WEST);
      frame.add(new JButton("中"));
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

运行效果:

这里写图片描述

FlowLayout(流式布局)

FlowLayout是定义在AWT包中的布局管理器。FlowLayout默认的对齐方式为居中对齐,可以在实例对象的时候指定对齐方式。FlowLayout布局方式为自左向右排列,当一行排满后自动换行。

构造方法

方法名 说明
FlowLayout() 构造一个新的 FlowLayout,它是居中对齐的,默认的水平和垂直间隙是 5 个单位
FlowLayout(int align) 构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个单位
FlowLayout(int align, int hgap, int vgap) 创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙

下面通过一个示例来演示BorderLayout的使用

使用示例

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

/**
 * FlowLayout示例
 * 
 * @author jianggujin
 *
 */
public class FlowLayoutDemo
{
   public static void main(String[] args)
   {
      JFrame frame = new JFrame("FlowLayoutDemo");
      frame.setBounds(500, 200, 300, 300);
      // 更改默认布局管理器为FlowLayout
      frame.setLayout(new FlowLayout());
      for (int i = 0; i < 6; i++)
      {
         frame.add(new JButton("按钮" + i));
      }
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

运行效果:
这里写图片描述

GridLayout(网格布局)

GridLayout是定义在AWT包中的布局管理器。GridLayout布局管理器将组件按照网格方式排列,将容器分成规则矩形块,每个组件尽可能占据每块空间。

构造方法

方法名 说明
GridLayout() 创建具有默认值的网格布局,即每个组件占据一行一列
GridLayout(int rows, int cols) 创建具有指定行数和列数的网格布局
GridLayout(int rows, int cols, int hgap, int vgap) 创建具有指定行数和列数的网格布局

下面通过一个示例来演示GridLayout的使用

使用示例

import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

/**
 * GridLayout示例
 * 
 * @author jianggujin
 *
 */
public class GridLayoutDemo
{
   public static void main(String[] args)
   {
      JFrame frame = new JFrame("GridLayoutDemo");
      frame.setBounds(500, 200, 300, 300);
      // 更改默认布局管理器为GridLayout
      frame.setLayout(new GridLayout(3, 3, 10, 10));
      for (int i = 0; i < 9; i++)
      {
         frame.add(new JButton("按钮" + i));
      }
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

运行效果:

这里写图片描述

绝对位置布局

顾名思义,绝对位置布局就是不使用任何布局管理器,将组件放在固定的位置。正常情况下不建议使用该方式,使用这种方式组件的位置和大小不会自动适配,当容器大小改变时,组件显示效果可能会变的不理想。

使用示例

import javax.swing.JButton;
import javax.swing.JFrame;

/**
 * 绝对位置布局示例
 * 
 * @author jianggujin
 *
 */
public class AbstractLayoutDemo
{
   public static void main(String[] args)
   {
      JFrame frame = new JFrame("绝对位置布局Demo");
      frame.setBounds(500, 200, 300, 300);
      // 设置不使用任何布局
      frame.setLayout(null);
      JButton button1 = new JButton("按钮1");
      // 设置组件绝对位置大小
      button1.setBounds(10, 10, 100, 50);
      frame.add(button1);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

运行效果:

这里写图片描述

版权声明:本文为博主原创文章,转载请标明出处。

Java之GUI编程(一)

GUI全称Graphical User Interfaces,意为图形用户户界面,又称为图形用户接口,GUI指的就是采用图形方式显示的计算机操作用户界面,打个比方吧,我们点击QQ图标,就会弹出一个QQ...
  • dandanzmc
  • dandanzmc
  • 2014年04月25日 11:46
  • 35192

Java GUI:图形用户界面三剑客相比拼

进行Java GUI(Graphical User Interface,图形用户界面)编程,大家或许经常徘徊在SWT/JFACE, Swing, AWT之间选择,哪一个更合适自己?AWT作为Java语...
  • u010995220
  • u010995220
  • 2016年04月11日 12:16
  • 7629

java之 22天 GUI 图形界面编程(一)

GUI(图形用户界面) import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import...
  • luobing_csdn
  • luobing_csdn
  • 2017年03月27日 11:24
  • 1589

用Java GUI做一个简单的管理系统

教师学生信息管理系统、java初学者,利用Java语言的GUI完成
  • qq_36330228
  • qq_36330228
  • 2017年04月17日 16:07
  • 6125

Java基础---图形用户界面GUI(二)

常用AWT组件(Component、Cavas、Checkbox、Choice、菜单{MenuBar菜单条、Menu菜单、MenuItem菜单项}、Container、Window、Dialog、Fi...
  • daividtu
  • daividtu
  • 2015年12月03日 17:47
  • 2357

JAVA与GUI

—— 有些东西永远比其他东西重要,自己去区分;有些概念永远值得花时间反复理解,自己去体会。   最近在维护公司的老项目,居然还在用Java Swing做客户端工具,如下图:   从第二张图片的...
  • alli0968
  • alli0968
  • 2016年02月05日 10:11
  • 2431

java之十一 Java GUI

窗口基本原理     AWT根据类的层次定义窗口,并在每一层添加了特定的功能。在这些窗口中,用得最普遍的是在小应用程序派生于Panel类的窗口和派生于Frame类...
  • zhangchen124
  • zhangchen124
  • 2016年05月24日 19:24
  • 4763

Java之GUI编程(二)——布局管理器

在上篇博客Java之GUI编程(一)中我已经对GUI编程的组件和事件做了简单介绍了,现在来看看另外一部分关于组件在各个平台是如何做到仍能保持自己合理的位置大小以及外观的。 已经说了Ja...
  • dandanzmc
  • dandanzmc
  • 2014年05月03日 15:10
  • 15459

Java GUI程序设计的初步上

在实际应用中,我们见到的许多应用界面都属于GUI图形型用户界面。如:我们点击QQ图标,就会弹出一个QQ登陆界面的对话框。这个QQ图标就可以被称作图形化的用户界面。   其实,用户界面的类型分为两类...
  • lijizh1013
  • lijizh1013
  • 2012年09月17日 23:17
  • 38042

java gui编程介绍

java GUI编程是java体系中相对比较不受重视的一个部分 ,相比较其他语言中的图形界面,GUI没有什么优势,所以这个GUI看起来似乎并没有什么卵用。不过大多数语言的图形界面原理大都是类似的,对于...
  • xiaoliheng1993
  • xiaoliheng1993
  • 2016年08月28日 15:41
  • 596
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA图形界面(GUI)之布局管理器
举报原因:
原因补充:

(最多只允许输入30个字)