• 第四章 第三节 使用FillLayout


    第三节 使用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)

    返回目录

  • 相关阅读:
    [luoguP2762] 太空飞行计划问题(最大权闭合图—最小割—最大流)
    [luoguP2680] 运输计划(lca + 二分 + 差分)
    [luoguP2758] 编辑距离(DP)
    [luoguP2890] [USACO07OPEN]便宜的回文Cheapest Palindrome(DP)
    Javascript对象拷贝(clone)
    使用JavaScript访问XML数据
    javascript 树形菜单
    Simple JavaScript Inheritance
    用 javascript 操作 xml
    javascript flash 弹框
  • 原文地址:https://www.cnblogs.com/ols/p/2173329.html
Copyright © 2020-2023  润新知