文档章节

Java中常用的布局管理器

Vernayyy
 Vernayyy
发布于 2016/03/03 20:38
字数 1629
阅读 9
收藏 0

1、FlowLayout 流式布局

API中说明:

流布局一般用来安排面板中的按钮。它使得按钮呈水平放置,直到同一条线上再也没有适合的按钮。线的对齐方式由
align 属性确定。可能的值为:

 import java.awt.*;
import java.applet.Applet; [object Object]
public class myButtons extends Applet {
 [object Object] [object Object] [object Object]Button button1, button2, button3; [object Object]
 [object Object] [object Object] [object Object]public void init() { [object Object]
 [object Object] [object Object] [object Object] [object Object]button1 = new Button("Ok");  [object Object] [object Object] [object Object]
 [object Object] [object Object] [object Object] [object Object]button2 = new Button("Open");
 [object Object] [object Object] [object Object] [object Object]button3 = new Button("Close"); [object Object]
 [object Object] [object Object] [object Object] [object Object]add(button1);  [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object]
 [object Object] [object Object] [object Object] [object Object]add(button2); [object Object]
 [object Object] [object Object] [object Object] [object Object]add(button3); [object Object]
 [object Object] [object Object] [object Object] [object Object]} [object Object]
 [object Object]} [object Object]


2、BorderLayout 边框式布局

API说明:

这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTHSOUTHEASTWESTCENTER。当使用边框布局将一个组件添加到容器中时,要使用这五个常量之一,例如:

 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_STARTLINE_END。在 ComponentOrientation 设置为 ComponentOrientation.LEFT_TO_RIGHT 的容器中,这些常量分别映射到 NORTHSOUTHWESTEAST

3、GridLayout 网格布局

API说明:

GridLayout
类是一个布局处理器,它以矩形网格形式对容器的组件进行布置。容器被分成大小相等的矩形,一个矩形中放置一个组件。例如,下面是一个将六个按钮布置到三行两列中的
applet:

 import java.awt.*; [object Object]
import java.applet.Applet; [object Object]
public class ButtonGrid extends Applet { [object Object]
 [object Object] [object Object]public void init() { [object Object]
 [object Object] [object Object] [object Object] [object Object] [object Object]setLayout(new GridLayout(3,2));
 [object Object] [object Object] [object Object] [object Object] [object Object]add(new Button("1")); [object Object]
 [object Object] [object Object] [object Object] [object Object] [object Object]add(new Button("2")); [object Object]
 [object Object] [object Object] [object Object] [object Object] [object Object]add(new Button("3")); [object Object]
 [object Object] [object Object] [object Object] [object Object] [object Object]add(new Button("4")); [object Object]
 [object Object] [object Object] [object Object] [object Object] [object Object]add(new Button("5")); [object Object]
 [object Object] [object Object] [object Object] [object Object] [object Object]add(new Button("6")); [object Object]
 [object Object] [object Object]} [object Object]
 [object Object]} [object Object]

4、CardLayout 卡片布局

API说明:

CardLayout 对象是容器的布局管理器。它将容器中的每个组件看作一张卡片。一次只能看到一张卡片,容器则充当卡片的堆栈。当容器第一次显示时,第一个添加到
CardLayout 对象的组件为可见组件。

卡片的顺序由组件对象本身在容器内部的顺序决定。CardLayout 定义了一组方法,这些方法允许应用程序按顺序地浏览这些卡片,或者显示指定的卡片。addLayoutComponent(java.awt.Component, java.lang.Object) 方法可用于将一个字符串标识符与给定卡片关联,以便进行快速随机访问。


5、BoxLayout 盒式布局

API说明:

允许垂直或水平布置多个组件的布局管理器。这些组件将不包装,因此举例来说,垂直排列的组件在重新调整框架的大小时仍然被垂直排列。

用水平组件和垂直组件的不同组合嵌套多面板的作用类似于 GridBagLayout,但没那么复杂。该图显示了两个水平排列的面板,每个面板都包含 3 个垂直排列的组件。

BoxLayout 管理器是用 axis 参数构造的,该参数指定了将进行的布局类型。有四个选择:

X_AXIS :从左到右水平布置组件。
Y_AXIS :从上到下垂直布置组件。
LINE_AXIS :根据容器的 ComponentOrientation 属性,按照文字在一行中的排列方式布置组件。如果容器的 ComponentOrientation 表示水平,则将组件水平放置,否则将它们垂直放置。对于水平方向,如果容器的 ComponentOrientation 表示从左到右,则组件从左到右放置,否则将它们从右到左放置。对于垂直方向,组件总是从上到下放置的。
PAGE_AXIS :根据容器的 ComponentOrientation 属性,按照文本行在一页中的排列方式布置组件。如果容器的 ComponentOrientation 表示水平,则将组件垂直放置,否则将它们水平放置。对于水平方向,如果容器的 ComponentOrientation 表示从左到右,则组件从左到右放置,否则将它们从右到左放置。对于垂直方向,组件总是从上向下放置的。

对于所有方向,组件按照将它们添加到容器中的顺序排列。

BoxLayout 试图按照组件的首选宽度(对于水平布局)或首选高度(对于垂直布局)来排列它们。对于水平布局,如果并不是所有的组件都具有相同的高度,则 BoxLayout 会试图让所有组件都具有最高组件的高度。如果对于某一特定组件而言这是不可能的,则 BoxLayout 会根据该组件的 Y 调整值对它进行垂直调整。默认情况下,组件的 Y 调整值为 0.5,这意味着组件的垂直中心应该与其他 Y 调整值为 0.5 的组件的垂直中心具有相同 Y 坐标。

同样地,对于垂直布局,BoxLayout 试图让列中的所有组件具有最宽组件的宽度。如果这样做失败,则 BoxLayout 会根据这些组件的 X 调整值对它进行水平调整。对于 PAGE_AXIS 布局,基于组件的开始边水平调整。换句话说,如果容器的 ComponentOrientation 表示从左到右,则 X 调整值为 0.0 意味着组件的左边缘,否则它意味着组件的右边缘。

许多程序使用 Box 类,而不是直接使用 BoxLayout。Box 类是使用 BoxLayout 的轻量级容器。它还提供了一些帮助您很好地使用 BoxLayout 的便利方法。要获取您想要的排列,将组件添加到多个嵌套的 box 中是一种功能强大的方法。

本文转载自:http://blog.sina.com.cn/s/blog_980586080100zra1.html

共有 人打赏支持
Vernayyy
粉丝 13
博文 36
码字总数 18696
作品 0
海淀
程序员
14.3-全栈Java笔记:JPanel原来是这样用的

在GUI编程中,如果我们要向窗口中直接添加控件(如按钮控件、标签控件、文本框控件等)是不建议的,所以就出现了容器(JPanel),以后我们只需要在容器里加控件,然后将容器加到窗口上即可。...

全栈Java
06/26
0
0
SpringMVC之接收请求参数和页面传参

Spring接收请求参数 1,使用HttpServletRequest获取 Java代码 @RequestMapping("/login.do") public String login(HttpServletRequest request){ String name = request.getParameter("name")......

白志华
2015/09/23
0
0
做几道基础的Java测试题,看看最近有进步吗?欢迎来学习

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

启示录是真的
05/24
0
0
Java图形用户界面布局控制Layout练习

尝试搭建登录对话框,包含两个文字标签(用户名、服务器IP),两个文本输入条(用户名、服务器IP),一个按钮(登录),按照自己认为合适的方式布局。   我把GridLayout(网格布局)、Bor...

devops1024
06/27
0
0
BasicDataSource数据源配置及其资料

在开发基于数据库的应用系统时,需要在项目中进行数据源的配置来为数据库的操作取得数据库连接。配置不同数据库的数据源的方法大体上都是相同的,不同的只是不同数据库的JDBC驱动类和连接URL...

AaronP
2014/09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

流量劫持是如何产生的?

流量劫持,这种古老的攻击沉寂了一段时间后,最近又开始闹的沸沸扬扬。众多知名品牌的路由器相继爆出存在安全漏洞,引来国内媒体纷纷报道。只要用户没改默认密码,打开一个网页甚至帖子,路由...

谢思华
24分钟前
0
0
Hadoop Client无法使用maven下载源码

最近在学习hadoop,使用maven的时候想看一下源码的注释,结果IDEA一直提示无法下载 搞得我一度以为maven坏掉了。 但是通过搜索,发现在maven仓库里确实没有源码.... 而2.8.1以及之前的版本是...

Iceberg_XTY
25分钟前
0
0
为什么程序员千万不要重写代码?

你所做的事情,也许暂时看不到成果,但不要灰心或焦虑,你不是没有成长,而是在扎根。 图片来自网络 0 前言 程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的...

Java小铺
27分钟前
0
0
VUE集成AdminLte

1. 安装需要到插件 npm i admin-lte -Snpm i jquery -Snpm i axios -Snpm i vue-router -S 2. 配置webpack.config.js 2.1 module.exports.module.rules修改字体loader: {test: /\.(p......

Pasenger
今天
0
0
Spring Aop原理之切点表达式解析

在前面的文章(Spring AOP切点表达式详解)中,我们总结了Spring Aop切点表达式的用法,而在上文(Spring Aop原理之Advisor过滤)中我们讲到,切点表达式的解析主要是在PatternParser.parse...

爱宝贝丶
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部