网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.setUTCFullYear 方法.
.值得关注的持久化技术: hiberna.
.jive中的abstract Factory.
.实用工具类库java.util.
.Sun JDK/JRE 执行禁止类漏洞.
.Struts的优点及其在Apusic上的安.
.取余运算符 (%).
.(转)使用 Eclipse 作为 Jakarta .
.往JDK里加入一个安全提供者以获取.
.用JSTL标签访问list且判断list的.
.《J2EE核心模式》(DAO模式).
.实例讲解如何利用Hibernate开发B.
.Spring JDBC抽象框架简化Web数据.
.透视应用服务器.
.为 SWT Windows桌面程序定制适合.
.从重构的角度学习bridge设计模式.
.关于UDDI的实现.
.在Java中实现条件编译.
.Sun Java System Access Manager.
.开发线程安全的Spring Web应用.

组织SWT/JFace控件的利器:Layout

发表日期:2008-1-5



  在可视化编程时代,大多数可视化的GUI开发工具都提供了按一定规则排列Form中的控件的功能。但是对于Java来说,支持可视化开发的工具并不多,虽然有一些这样的工具,但它们大多是第三方的产品,稳定性方面有一些欠缺。因此,在很多时候使用Java编写GUI程序时,就要使用布局(Layout)来控制Form上的控件的位置。

  本文主要讨论如何使用SWT中提供的布局来安排控件的位置,并通过实例来演示这一过程。在SWT中提供了5种布局:FillLayout, RowLayout, GridLayout, FormLayout, and StackLayout。下面我将具体讨论这5种布局的使用。

  FillLayout

  FillLayout是最简单的布局。它可以将控件横向或纵向进行排列,并且其中每个控件都有同样的宽度或高度。使用FillLayout一般分为2步。

  1. 建立一个FillLayout对象。

  2. 使用setLayout方法设置Shell对象的布局。

  下面代码使用FillLayout在Shell上放了3个按钮,代码如下:

package layout;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;

public class TestFillLayout
{
 public static void main(String[] args)
 {
  Display display = new Display();
  Shell shell = new Shell(display, SWT.DIALOG_TRIM);
  shell.setText("FillLayout演示");
  shell.setSize(400, 300);

  // 设置shell的布局
  FillLayout layout = new FillLayout();
  shell.setLayout(layout);

  // 向shell添加控件
  Button button1 = new Button(shell, SWT.PUSH);
  button1.setText("按钮1");

  Button button2 = new Button(shell, SWT.PUSH);
  button2.setText("按钮2");

  Button button3 = new Button(shell, SWT.PUSH);
  button3.setText("按钮3");

  shell.open();
  while (!shell.isDisposed())
  {
   if (!display.readAndDispatch())
   {
    display.sleep();
   }
  }
  display.dispose();
 }
}
  界面如图1所示。

组织SWT/JFace控件的利器:Layout(图一)
图 1 使用横向FillLayout的Shell界面

  假如想要Shell上的控件纵向排列,可以在建立布局时将type属性设置成SWT.VERTICAL。代码如下:

FillLayout layout = new FillLayout();
layout.type = SWT.VERTICAL;
shell.setLayout(layout);
  图2是控件纵向排列的效果图

组织SWT/JFace控件的利器:Layout(图二)
图 2 使用纵向FillLayout的Shell界面

  FillLayout的构造函数重载了2次。其中一个构造函数有一个参数,这个参数就是type。因此,我们也可以通过FillLayout的构造函数对type赋值。

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

  RowLayout的功能和FillLayout差不多。只是它和FillLayout的最大区别是每个控件并不一定是一样大小。而且RowLayout是按行排列,这一点和FillLayout是不同的。在一行排满后,就从下一行开始排列。和RowLayout配合使用的还有一个RowData类。这个类可以设置每一个控件的大小。下面代码是一个使用RowLayout的小例子。

package layout;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;

public class TestRowLayout
{
 public static void main(String[] args)
 {
  Display display = new Display();
  Shell shell = new Shell(display, SWT.DIALOG_TRIM);
  shell.setText("RowLayout演示");
  shell.setSize(220, 200);

  // 将Shell的布局设置成RowLayout
  RowLayout layout = new RowLayout(SWT.HORIZONTAL);
  layout.spacing = 30;
  layout.marginLeft = 30;
  layout.marginTop = 30;
  shell.setLayout(layout);

  RowData rowData = new RowData();
  rowData.height = 50;
  rowData.width = 100;

  // 向shell添加控件
  Button button1 = new Button(shell, SWT.PUSH);
  button1.setText("按钮1");
  button1.setLayoutData(rowData);

  Button button2 = new Button(shell, SWT.PUSH);
  button2.setText("按钮2");

  Button button3 = new Button(shell, SWT.PUSH);
  button3.setText("按钮3");

  shell.open();
  while (!shell.isDisposed())
  {
   if (!display.readAndDispatch())
   {
    display.sleep();
   }
  }
  display.dispose();
 }
}
  图3是使用RowLayout的效果图


上一篇:Java SE 6中JDBC 4.0的增强特性 人气:972
下一篇:Eclipse RCP:用于构建平台的平台 人气:884
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐