频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Eclipse中用SWT和JFace开发入门

来源:blog 作者:Barry 出处:巧巧读书 2007-10-05 进入讨论组
基本控件

  几乎所有 SWT GUI 都是从某些基础部分开始创建的。所有 SWT 窗口小部件都可以在 org.eclipse.swt.widgetorg.eclipse.swt.custom 包中找到。(一些 Eclipse 插件还在其他包中提供了定制的窗口小部件。
)窗口小部件包中包含一些基于操作系统控件的控件,而定制包中则包含一些超出操作系统控件集之外的控件。一些定制的软件包控件类似于窗口小部件包中的控件。为了避免命名冲突,定制控件的名称都是以“C”开始的(例如,比较 CLabel 与 Label)。

  在 SWT 中,所有控件(除了一些高级控件,比如 shell,将在后面进行讨论)在创建的时候都必须有一个父控件(一个复合实例)。在创建的时候,这些控件被自动“添加”到父控件中,这与必须明确添加到父控件中的 AWT/Swing 中的控件有所不同,自动添加产生了一种“自上而下”地构造 GUI 的方法。这样,所有控件都可以采用一个复合父控件(或者一个子类)作为构造函数的参数。

  大多数控件都有一些必须在创建时设置的标记选项。因此,大多数控件还有另外一个构造函数参数,我们通常称之为样式,该参数提供了设置这些选项的标记。所有这些参数值都是 static final int,并且都是在 org.eclipse.swt 包的 SWT 类中定义的。如果不需要任何参数,则可以使用 SWT.NONE 值。

  标签

  标签可能是最简单的控件,标签 被用于显示纯文本(没有颜色、特殊字体或样式的文本)或称为图标的小图像。标签不接受焦点(换句话说,用户不能通过 Tab 键或鼠标移动到标签),因此,标签无法产生输入事件。

  清单 1 展示了如何创建一个简单的文本标签。

  清单 1. 创建一个带文本的标签

 
import org.eclipse.swt.widget.*; 
 : 
Composite parent = ...; 
 : 
// create a center aligned label 
Label label = new Label(parent, SWT.CENTER);   
label.setText("This is the label text"); 

  注意,该文本是采用不同于构造函数的单独的方法设置的。这是所有 SWT 控件的一个典型象征。只有父控件和样式是在构造函数中设置的,其他所有属性都是在已创建的对象上设置的。

  由于平台的限制,标准标签控件不能同时拥有文本和图标。为了支持同时拥有文本和图标,可以使用 CLabel 控件,如清单 2 中所示。
 
  清单 2. 创建一个包含文本和图像的标签

 
import com.eclipse.swt.graphics.*; 
import org.eclipse.swt.widget.*; 
import org.eclipse.swt.custom.*; 
 : 
Composite parent = ...; 
Image image = ...; 
 : 
// create a left aligned label with an icon 
CLabel Clabel = new CLabel(parent, SWT.LEFT);   
label.setText("This is the imaged label text""); 
label.setImage(image); 

  文本

  在标签显示文本的同时,您时常还想允许用户插入文本。文本 控件就是用于此目的的。文本可以是单行的(一个文本字段),也可以是多行的(一个文本区域)。文本还可以是只读的。文本字段中没有描述,因此,常常通过标签控件处理它们,以确定它们的用途。文本控件还可以包含一个“工具提示”,提供关于控件用途的信息(所有控件都支持这一特性)。

  清单 3 显示了如何使用允许使用的有限数量的特性来创建一个简单的文本字段。选择默认文本是为了便于擦除。 

  清单 3. 创建一个包含选定的默认文本和一个限制条件的文本

 
import org.eclipse.swt.widget.*; 
 : 
Composite parent = ...; 
 : 
// create a text field 
Text name = new Text(parent, SWT.SINGLE);   
name.setText("<none>"); 
name.setTextLimit(50); 
name.setToolTipText("Enter your name -- Last, First");  
name.selectAll();  // enable fast erase 

  按钮

  通常,您希望用户指出应该何时进行某项操作。最常见的做法是使用按钮 控件。存在以下几种样式的按钮:
  • ARROW —— 显示为一个指向上、下、左、右方向的箭头。
  • CHECK —— 已标记的复选标记。
  • FLAT —— 没有凸起外观的按钮。
  • PUSH —— 瞬时按钮(最常见的事件源)。
  • RADIO —— 具有排他性的粘性标记(sticky mark),其他所有单选按钮都在相同的组中。
  • TOGGLE —— 一个粘性按钮。
  清单 4 创建了一个“Clear”按钮:  

  清单 4. 创建一个按钮

 
import org.eclipse.swt.widget.*; 
 : 
Composite parent = ...; 
 : 
// create a push button 
Button clear = new Button(parent, SWT.PUSH);   
clear.setText("Clea&r"); 

  名称中的 & 导致利用紧接着的一个字母创建一个加速器,允许通过 Ctrl+<字母> 顺序的方式按下按钮(控件顺序由主机操作系统决定)。

  事件监听器

  通常,您可能想在选择按钮(特别是某种推式按钮)的时候执行一些操作。您可以通过向该按钮添加一个 SelectionListener(在 org.eclipse.swt.events 包中)做到这一点。当按钮状态发生改变时(通常是按钮被按下),就会生成事件。清单 5 在单击 Clear 按钮时输出一条消息。  

  清单 5. 按钮事件处理程序

 
import org.eclipse.swt.events.*; 
 : 
// Clear button pressed event handler 
clear.addSelectionListener(new SelectionListener() {  
    public void widgetelected(selectionEvent e) { 
        System.out.println("Clear pressed!");    
    } 
    public void widgetDefaultSelected(selectionEvent e) { 
        widgetelected(e); 
    } 
}); 

  此代码使用了一个匿名的内部类,但您还可以使用指定的内部类或单独的类作为监听器。多数包含两个或更多方法的 ...Listener 类还有一个类似的 ...Adapter 类,这个类提供了一些空的方法实现,并且可以减少您需要编写的代码数量。例如,还有一个 SelectionAdapter 类,这个类实现了 SelectionListener

  注意,在这些方法中执行的操作必须快速完成(通常不足一秒时间),或者说 GUI 的反应将是迟钝的。更长时间的操作(比如访问文件)需要单独的线程,但那是以后某期文章的主题。文章地址: http://www.qqread.com/java/r872155600.html 更多文章 更多内容请看Eclipse应用技术Solaris基础知识入门Wlan组网----家庭专题专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章