惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
I
InfoQ
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
博客园 - Franky
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
月光博客
月光博客
罗磊的独立博客

博客园 - ols

grails导入excel grails的插件 grails环境搭建 短租app简析 在.net中用NAudio控件播放MP3 不小心发现中粮网站的一个bug 第十三章 第六节 本章小结 第十三章 第五节 关于WindowManager的一些话 第十三章 第四节 ApplicationWindow类 第十三章 第三节 SWT和JFace的关系 第十三章 第二节 问候JFace的世界 第十三章 第一节 概述 第四章 第五节 使用GridLayout 第四章 第四节 使用RowLayout 第四章 第二节 布局 第四章 第一节 概述 第三章 第七节 本章小结 第三章 第六节 SWT类的常量与函数 第三章 第五节 剖析Shell对象
第四章 第三节 使用FillLayout
ols · 2011-09-10 · via 博客园 - ols

第三节 使用FillLayout

返回目录

FillLayout是布局类中最简单的,它把所有的控件放在一行或一列,并使它们有相同的大小。它有一个公有(public)的属性和类型,决定控件是放在一行还是放在一列。可以把类型传递给构造函数,也可以在构造函数后设置类型。FillLayout的构造函数请参见表4-1

4-1FillLayout的构造函数

构造函数

说明

public FillLayout()

Constructs a FillLayout and sets type to SWT.HORIZONTAL.

public FillLayout(int type)

Constructs a FillLayout and sets type to the passed type.

type可取的值有SWT.HORIZONTALSWT.VERTICAL,它们分别把控件放在一行和一列。

注意:FillLayout不检查type的合法性,所以可以传递任意的int值。尽管FillLayout的默认设置是SWT.HORIZONTAL,但如果传递一个既非SWT.HORIZONTAL又非SWT.VERTICAL的值,它将使用SWT.VERTICAL

下面的代码创建一个水平的FillLayout并把它赋给Shell

FillLayout layout = new FillLayout();

layout.type = SWT.HORIZONTAL;

shell.setLayout(layout);

也可以裁去一行(精简一行),在构造函数中传入样式(type)就行了;下面的代码创建垂直的FillLayout

FillLayout layout = new FillLayout(SWT.VERTICAL);

shell.setLayout(layout);

如果把布局(layout)赋给Shell后不需保留layout的引用(reference),可以一步完成:

shell.setLayout(new FillLayout(SWT.VERTICAL));

我们来看一个FillLayout的例子。在下面的代码中,我们创建一个DisplayShell,然后创建一个水平的FillLayout并把它作为布局(layout)赋给Shell。接着,添加三个按钮,分别标为onetwothree,最好进入事件循环。这些代码在一行中显示三个按钮,填满了整个窗体(见图4-1)。

fig74_01_0
4-1  水平的FillLayout

要编译并运行这段代码,在examples/ch4目录下创建文件FillLayoutHorizontal.java。把清单4-1中的代码输入文件并保存。接着打开命令提示行或shell,转到examples的父目录(parent directory)。把在第三章创建的build.xml文件复制到父目录,然后输入:

清单4-1    FillLayoutHorizontal.java

ant -Dmain.class=examples.ch4.FillLayoutHorizontal

package examples.ch4;

import org.eclipse.swt.widgets.*;

import org.eclipse.swt.layout.FillLayout;

import org.eclipse.swt.SWT;

public class FillLayoutHorizontal {

public static void main(String[] args) {

   Display display = new Display();

   Shell shell = new Shell(display);

   shell.setLayout(new FillLayout(SWT.HORIZONTAL));

   new Button(shell, SWT.PUSH).setText("one");

   new Button(shell, SWT.PUSH).setText("two");

   new Button(shell, SWT.PUSH).setText("three");

   shell.open();

   while (!shell.isDisposed()) {

     if (!display.readAndDispatch()) {

       display.sleep();

     }

   }

   display.dispose();

}

注意要用main class的完整的包名称(full package name)。这个类编译和运行后,就可以看到如图4-1所示的窗体。

本书中,我们不再重复这些说明;在我们介绍新的代码时,沿用前面的步骤,用相应的类名称取代examples.ch4.FillLayoutHorizontal

如果像下面这样,把SWT.VERTICAL传递给FillLayout的构造函数, 这些按钮就会排成一列(见图4-2)。

shell.setLayout(new FillLayout(SWT.VERTICAL));

 fig75_01_0

4-2 垂直的FillLayout

FillLayout只能实现相对简单的布局(layout),因此多用于嵌套的复合控件(nested composite)。要实现复杂的布局,就要用到更高级的布局类(layout classes)

返回目录