`
melord
  • 浏览: 145838 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Swing 布局管理器

    博客分类:
  • jfc
阅读更多

Null Layout
Null layout也称绝对布局管理器,如果一个容器使用绝对布局的话,那么其中的组件要调用setBounds()方法以确定在哪个位置显示组件,否则组件将不显示。 如果不用WindowsBuilder之类的界面开发插件,使用绝对定位将是一件痛苦的事。 在界面较复杂的情况下,一般不会使用绝对布局

 


FlowLayout
使用此布局管理器将容器内的组件按从左到右或从右到左排列,如果剩余空间小于组件,那么组件将在新行显示。

 


BorderLayout
是某些容器组件的默认布局管理器,它将容器分为NORTH, SOUTH,CENTER,WEST,EAST五个区域,每个区域最多只能有一个组件,所以它也只适用于容器内组件较少(不大于5个)的布局管理。 使用方式:
Container.add(component, BorderLayout. SOUTH);
如果第二个参数未指定,那么默认在BorderLayout. CENTER区域显示。
如果对同一个区域添加了多个组件,那么只显示最后添加的组件。

 


GridLayout
网格布局管理器,它将容器划分为指定行*列个单元格,按组件add的顺序,依次将组件放入单元格中,可以像表格一样指定其单元格之间的水平与垂直间距,但是,它不可以跨行与跨列。 所以此布局管理器只适用于容器内组件排列呈类表格方式的容器布局。


GridBagLayout
GridLayout不可以跨行与跨列,但GridBagLayout可以,个人认为GridBagLayout是基于GridLayout的,因为它的原理也是将容器区域分为若干个单元格的。 不过功能远比GridLayout强大,不仅可以跨行与跨列,还可以指定在容器大小变更时,组件是否向x轴与y轴方向延伸,以及延伸率。
每个由 GridBagLayout 管理的组件都与 GridBagConstraints 的实例相关联。 Constraints 对象指定组件的显示区域在网格中的具体放置位置,以及组件在其显示区域中的放置方式。 除了 Constraints 对象之外,GridBagLayout 还考虑每个组件的最小大小和首选大小,以确定组件的大小。 下面对GridBagConstraints的几个属性做一个简要说明,如要了解属性的原生说明请参考sun官方资料
gridx, gridy  :指定组件在容器单元格内的行索引与列索引,如最左上的那个单元格式,其gridx为0,gridy为0。
gridwidth, gridheight :指定单元格的跨行与跨列数
fill :指定填充方向,可以向水平,垂直或水平+垂直方向充满整个容器。
ipadx, ipady:指定组件的内部填充,相当于单元格边距,即给组件的最小宽度或高度添加多大的空间。 此属性在我实践中未能参透其中工作方式(有时填充,有时不填充)
insets :指定组件的外部填充,相当于单元格间距。
Anchor :当组件的大小小于可用显示区域时使用,指定组件在显示区域中的位置。 请见下图:
-------------------------------------------------
|FIRST_LINE_START   PAGE_START     FIRST_LINE_END|
|                                                |
|                                                |
|LINE_START           CENTER             LINE_END|
|                                                |
|                                                |
|LAST_LINE_START     PAGE_END       LAST_LINE_END|
-------------------------------------------------

weightx, weighty :指定容器大小变动时,向x或y方向的伸缩率。

关于更多GridBagLayout的信息请参考JDK API或相关资料,下面给出一个例子。


BoxLayout
允许垂直或水平布置多个组件的布局管理器。 它与Box联合工作,Box是一个使用了BoxLayout的轻量级组件。 Box的思想是将容器内的组件当做一个Box(盒子),在Box与Box之间可以创建一些不可见的区域,分为:
Glue: 相当于胶水,粘住了两个box,它会自动沿垂直或水平方向填充两个box之间的不可见区域
Strut: 指定高度(宽度)的垂直(水平)间距的Glue
RigidArea: 同时指定高度与宽度的Strut
下面请看一个示例,实现的效果与GridBagLayout中示例的效果一样

SpringLayout
SpringLayout是一种较特殊的布局管理器,它通过定义容器及容器内组件的约束来实现布局。 它与Spring, SpringLayout. Constraints联合使用。 在此之前先说一下Spring
Spring好似一个弹簧,它可以伸长到maximum,也可以收缩到minimun,在正常情况下它的长度是prefferenceSize,在容器大小变动时,它根据前面的三个值根据一系列规则计算出具体的value。 Spring是一个抽象类,它提供max,sum静态函数
SpringLayout. Constraints,将管理组件大小和位置更改方式的约束存储在 SpringLayout 控制的容器中,它有x、y、width 和 height 属性,因而它类似于一个 Rectangle。 但是,在 Constraints 对象中,这些属性具有的是 Spring 值,而不是整数。 此外,可以使用 constraint 属性按四个边(东、南、西、北)操作一个 Constraints 对象。
组件与组件的约束是通过边来定义的,如一个textfield的左边距label的右边多少距离。 下面给出边的计算公式:
WEST = x
NORTH = y
EAST = x + width
SOUTH = y + height
下面给出一个官方的示例:
容器容器pane使用Spring布局管理器,pane下有一个label及一个textfield。
   
总结
Swing的布局管理器感觉没有SWT好使,在现实的界面开发中,需要根据实际情况灵活使用多种布局管理器,不像SWT使用一个GridLayout差不多就可以了。 鉴于个人理解的还不够深刻,更多的资料需要去看sun官网布局管理器的说明:

<script></script>

分享到:
评论

相关推荐

    Swing布局管理器

    ### Swing布局管理器详解 #### 一、布局管理器概览 在Java图形用户界面编程中,Swing作为一套强大的工具包,为开发者提供了丰富的组件和功能,其中布局管理器是构建美观且易于维护的GUI应用程序的关键部分。布局...

    Java Swing布局管理器

    Java Swing 布局管理器 Java Swing 中的布局管理器是指在 Swing 应用程序中对组件进行布局和排列的机制。布局管理器是容器中的组件进行定位和整形的关键组件。在 Java 中,AWT 提供了五种类型的布局管理器:...

    Java GUI Swing 布局管理器篇

    Java GUI Swing 布局管理器篇

    java swing布局管理器实例之gridbaglayout,实现左右选择框.doc

    Java Swing 是一个用于构建图形用户界面(GUI)的框架,其中布局管理器是控制组件在窗口中排列的关键工具。在众多的布局管理器中,`GridBagLayout` 是最为灵活,但也最为复杂的。它允许开发者精确地控制组件的位置和...

    Swing布局与结构

    Swing布局管理器是用于安排组件在容器中的位置和大小的管理器。常用的布局管理器有BorderLayout、FlowLayout、GridLayout等。 四、基本的Swing应用程序 下面是一个基本的Swing应用程序的示例代码: ```java import...

    Java Swing布局管理器GridLayout例子.doc

    在Swing中,布局管理器是一个关键概念,它负责自动安排组件的位置和大小,以适应窗口的变化。`GridLayout` 是Swing提供的一种布局管理器,它将容器划分为固定的网格,并将组件按顺序放入这些网格中。 `GridLayout` ...

    JAVA swing布局管理器实例解析

    JAVA swing布局管理器实例解析 JAVA swing布局管理器实例解析是JAVA中一个非常重要的概念,对于学习JAVA的人来说具有非常重要的参考价值。布局管理器是指在容器中对组件的位置和大小进行管理的对象。JAVA swing中...

    swing 一个简单布局

    在 Swing 中,布局管理器是至关重要的,它们负责自动安排组件的位置和大小,以适应不同屏幕尺寸和分辨率。在这个"一个简单布局"的项目中,开发者创建了一个自定义的 Swing 布局,尽管它可能并不完美,但仍然可以作为...

    关于Swing的布局

    ### Swing布局管理器简介 Swing的布局管理器负责组件的排列和大小设置,不同的布局管理器有不同的布局规则,例如FlowLayout会将组件水平放置在同一行内,而BorderLayout则按照北、南、东、西、中心五个位置进行布局...

    javaSwing布局管理实例

    本实例将深入探讨Java Swing的布局管理器及其应用。 首先,Java Swing 提供了几种内置的布局管理器,包括 FlowLayout、BorderLayout、GridLayout、CardLayout 和 GroupLayout。每种布局管理器都有其特定的用途和...

    java swing MigLayout

    比较好用的java布局管理器,特别注明:只适用于swing,使用时把jar导入项目即可,具体使用方法和布局参数自行度娘

    布局管理器及事件处理代码

    1. **Java Swing布局管理器**: - FlowLayout:按照从左到右,然后从上到下的顺序排列组件。 - BorderLayout:将界面分为北、南、东、西、中五个区域,每个区域只能放置一个组件。 - GridLayout:创建一个等大小...

    Java Swing组件布局管理器之FlowLayout(流式布局)入门教程

    Java Swing 组件布局管理器之 FlowLayout(流式布局)入门教程 Java Swing 组件布局管理器中有多种布局管理器,今天我们主要介绍 FlowLayout(流式布局),它是最简单、最基础的一个布局管理器。 FlowLayout 也称为...

    java-中swing结构与布局管理器(ppt文档).ppt

    常见的Swing布局管理器有: 1. FlowLayout: 按照从左到右,然后从上到下的顺序排列组件。 2. BorderLayout: 分为五个区域(北、南、东、西、中),每个区域只能有一个组件。 3. GridLayout: 将容器划分为相同大小的...

    Swing常见布局管理器总结

    ### Swing常见布局管理器总结 #### 1. BorderLayout - 边界布局管理器 边界布局管理器(`BorderLayout`)是一种非常常见的布局管理器,主要用于处理容器内组件的定位,将其分布在容器的五个基本区域:北(North)...

    布局类(swing)

    Swing布局管理器包括以下几种: 1. **FlowLayout**:这是最简单的布局管理器,按照从左到右,从上到下的顺序放置组件。当容器的空间不足以容纳所有组件时,组件会换行显示。 2. **BorderLayout**:这种布局将容器...

    swing-layout-1.0.jar

    Swing布局管理器是Java GUI开发中的核心组件,主要用于组织和控制JFrame、JPanel等容器内组件的位置和大小。在Eclipse这样的集成开发环境中,`swing-layout-1.0.jar`是一个非常重要的库文件,它扩展了Swing内置的...

    swing layout-demo

    Swing布局管理器是Java图形用户界面(GUI)开发中的一个重要概念,主要用于组织和控制组件在容器中的排列方式。在“swing layout-demo”项目中,我们可以深入理解Swing布局管理器的工作原理及其应用。这个项目可能...

    java swing 布局管理

    Java Swing 提供了多种内置的布局管理器,每种都有其特定的用法和效果: 1. ** FlowLayout **:流式布局,按照从左到右,从上到下的顺序排列组件。当一行无法容纳所有组件时,会在下一行继续放置。 2. ** ...

Global site tag (gtag.js) - Google Analytics