科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Eclipse中用SWT和JFace开发入门

Eclipse中用SWT和JFace开发入门

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  可以使用标准窗口小部件工具箱(Standard Widget Toolkit,SWT)和 JFace 库来开发用于 Eclipse 环境的图形用户界面,而且还可以将它们用于开发单独的 GUI 本机应用程序。在本文中。

作者:中国IT实验室 来源:中国IT实验室 2007年9月30日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共5页)

  shell

  shell 是一种可能没有父复合控件的复合控件(框架或窗口);此外,它还有一个作为父控件的 Display,这通常也是默认设置。shell 有很多种样式,但最常见的样式是 SWT.SHELL_TRIMSWT.DIALOG_TRIM。shell 可以是模态的,也可以是非模态的。模态 shell 常常用于对话框,防止父 GUI(如果有的话)在关闭子 shell 之前被处理。

  清单 8 创建了一个框架样式的顶级非模态 shell。

  清单 8. 创建一个顶级 shell

 

import org.eclipse.swt.widget.*; 

 : 

Shell frame = new Shell(SWT.SHELL_TRIM); 

 : 


  shell 可以有子 shell。这些子 shell 是与父 shell 相关的独立桌面窗口(也就是说,如果父 shell 关闭,那么其所有子 shell 也将关闭)。

  清单 9 创建了一个对话框样式的子 shell。

  清单 9. 创建一个对话框 shell

 

: 

Shell dialog = new Shell(frame, SWT.DIALOG_TRIM); 

 : 


  参见图 4 中具有 SWT.SHELL_TRIMSee 的 shell,以及图 5 中具有 SWT.DIALOG_TRIM 的 shell,了解这些值如何影响 shell 的整洁性。

图 4. 具有 SWT.SHELL_TRIM 的 shell

具有 SWT.SHELL_TRIM 的 shell



图 5. 具有 SWT.DIALOG_TRIM 的 shell

具有 SWT.DIALOG_TRIM 的 shell

 

  布局管理器

  复合控件常常包含多个控件。可以使用以下两种方法安排这些控件:

  1. 绝对定位 ―― 为每个控件设置明确的 X 和 Y 位置,并通过代码设置一定的宽度和高度。
  2. 托管定位 ―― 每个控件的 X、Y、宽度和高度都是通过LayoutManager 设置的。


  在多数情况下,应该选择使用 LayoutManagers,因为很容易调整它们来适应可变大小的 GUI。SWT 也提供了一些布局管理器供您使用;在这一期的系列文章中,我们将讨论两种基本的布局管理器:FillLayout 和 GridLayout。在这两种情况下,每当重新设置复合控件的大小,都需要进行定位。

  一些布局管理器常常是专为某一个复合控件分配的。一些布局管理器只使用它们自身的参数就可以控制,而另一些布局管理器还需要其他参数 ―― LayoutData,该参数是在它们管理的复合控件中的每个控件上指定的。

  FillLayout

  FillLayout 以行或列的形式安排控件。每个控件所设置的大小将与填充该复合控件所需的宽度和高度相同,在这些控件之间,空间是平均分配的。一种特殊情况是:在仅有一个子控件时,该控件的大小被设置为填充整个父复合控件的大小。

  清单 10. 使用 FillLayout 创建一列控件

 

import org.eclipse.swt.widget.*; 

import org.eclipse.swt.layouts.*; 

 : 

Composite composite = ...; 

FillLayout fillLayout = new FillLayout(SWT.VERTICAL); 

composite.setLayout(fillLayout); 


  GridLayout

  GridLayout 提供了一个功能更强大的布局方法,该方法类似于使用 HTML 表的方法。它创建了 2-D 网格的单元格。可以将控件放置在一个或多个单元格中(可以称之为单元格跨越)。单元格的大小可以是相等的,或者是网格宽度或高度的某个给定可变百分比。可以将控件添加到某一行的下一个可用列中,如果这一行中没有更多的列,那么该控件将移动到下一行的第一列中。

  清单 11 创建了一个复合控件,该控件有两行和两个列,其中包含两个已标记的文本字段。这些列可以有不同的宽度。

  清单 11. 创建一个控件表

 

import org.eclipse.swt.widget.*; 

import org.eclipse.swt.layouts.*; 

 : 

Composite composite = ...; 

GridLayout gridLayout = new GridLayout(2, false); 

composite.setLayout(gridLayout); 

Label l1 = new Label(composite, SWT.LEFT); 

l1.settext("First Name: "); 

Text first = new Text(composite, SWT.SINGLE); 

Label l1 = new Label(composite, SWT.LEFT); 

l2.setText("Last Name: "); 

Text last = new Text(composite, SWT.SINGLE); 


  GridData

  考虑一下这种情况:您需要指定每个控件如何使用其单元格中的剩余空间。为了给每个单元格提供这种精确控制,添加到 GridLayout 的托管复合控件的控件可以拥有 GridData 实例(LayoutData 的子类)。

  清单 12 设置了这些文本字段,以便采用所有可用的剩余空间(根据前面的清单)。

  清单 12. 配置一个扩展到所有可用空间的布局

first.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

last.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 


 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章