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);
   }
}

运行效果:

这里写图片描述

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/jianggujin/article/details/50445093

Java界面常用布局管理器

Java 界面编程【01】页面布局       这是第一次在博客园里面写博客,是有关JAVA页面设计当中的布局管理器,可能...
  • a_lonely_dancer
  • a_lonely_dancer
  • 2016-09-18 19:35:21
  • 6602

Java三大常用布局管理器

三大常用布局管理器:BorderLayout,FlowLayout,GridLayout,以及计算器的案例
  • huanghi11
  • huanghi11
  • 2015-08-21 19:33:10
  • 6643

java中的swing组件、主要三大布局管理器的应用

二、布局管理器--介绍 1、概念:组件在容器(比如JFrame)中的位置和大小是由布局管理器来决定的。所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理。 2、种类:java共提供了五种...
  • zyj0813
  • zyj0813
  • 2017-10-22 14:05:44
  • 498

Java绝对布局的编写-不使用布局管理器

不使用布局管理器来布局控件类似于Android的absoluteLayout布局方式;也就是指定控件相对于窗体的显示位置 1。实例:import java.awt.Color; import jav...
  • sinat_38321889
  • sinat_38321889
  • 2017-08-29 21:08:05
  • 509

【Java Swing探索之路系列】之三:Java Swing布局管理器组件

作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWel...
  • AllenWells
  • AllenWells
  • 2015-06-30 10:20:39
  • 7747

三十、Java图形化界面设计——布局管理器之BorderLayout(边界布局)

边界布局管理器把容器的的布局分为五个位置:CENTER、EAST、WEST、NORTH、SOUTH。依次对应为:上北(NORTH)、下南(SOUTH)、左西(WEST)、右东(EAST),中(CENT...
  • liujun13579
  • liujun13579
  • 2012-07-22 12:37:35
  • 117536

java布局管理

1、 Swing基本组件练习 l JTextField(文本框) l JPasswordField(密码框) l JTextArea(文本域) l JCheckBox(复选框) l JRadioBut...
  • qq_27373459
  • qq_27373459
  • 2016-03-18 14:26:38
  • 267

Java布局管理器使用方法解析

很多初学者在用Java布局器自动布局画界面时,经常遇见不知道如何定义区域大小或按钮之间的距离等问题。我写过一篇《实现JAVA手动布局中各个组件能随窗口变化的方法》的文章,有读者反映算坐标不好算,问能不...
  • u014112224
  • u014112224
  • 2014-03-14 20:05:10
  • 576

二十九、Java图形化界面设计——布局管理器之FlowLayout(流式布局)

前文讲解了JFrame、JPanel,其中已经涉及到了空布局的使用。Java虽然可以以像素为单位对组件进行精确的定位,但是其在不同的系统中将会有一定的显示差异,使得显示效果不尽相同,为此java提供了...
  • liujun13579
  • liujun13579
  • 2012-07-21 20:36:59
  • 143774

JAVA布局管理器

JAVA的界面布局原理:因为Java是跨平台语言,使用绝对坐标显然会导致问题,即在不同平台、不同分辨率下的显示效果不一样。Java 为了实现跨平台的特性并且获得动态的布局效果,Java将容器内的所有组...
  • zsy_gemini
  • zsy_gemini
  • 2009-04-04 22:34:00
  • 21383
收藏助手
不良信息举报
您举报文章:JAVA图形界面(GUI)之布局管理器
举报原因:
原因补充:

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