`
hqs7636
  • 浏览: 221035 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JFace中的事件模式 (转载)

阅读更多
http://blog.csdn.net/javabloger/archive/2006/03/11/621836.aspx

(java)

大家好,因为工作的事情搞了一个多月,现在终于暂时安定下来了。这一系列的文章我也会继续往下写。

在这一节中,我会向大家介绍JFace中的事件模式。其实我相信这篇文章的读者应该大部分都会接触eclipse,这样可能也会接触过eclipse的插件开发。就是没有接触过,大家也可能会有在eclipse里面新建工程的时候出于各种原因(比如好奇心)点了plug-in project的时候吧。其实作为一个程序员来讲,保持好奇是很重要的。如果你大概看过一个plug-in project的结构,虽然可能不能全部理解,但是我相信也应该对Action之类有一些了解。我们这一节主要就是围绕Action来写的。为了增加可读性,我们首先介绍几个名词,这些名词都可以从eclipse的文档中找到。


什么是Action

JFace中的一个Action可以简单地理解成一个命令。那么它和事件有什么关系呢?比如说我点了一个菜单,那么点击本身就是一个事件,但是这个事件的影响就是相应的命令被执行了。大家日常使用的一些软件比如Office都是有菜单和工具栏的,而一个菜单项和一个工具栏可能执行的是同一个命令。比如Word里面要新建一个文档的话可以通过“文件”菜单下的“新建”实现,也可以通过点击工具栏上相应的图标实现。这个新建地功能本身在JFace里面是可以使用Action来实现的。


在JFace里面,Action可以关联到菜单,工具条,以及按钮(也就是Button)。当然关于如何关联,我们会在后面向大家详细介绍。


Action在JFace里面的定义是一个接口org.eclipse.jface.action.IAction。当然实际上你写程序的时候必须自己来实现这个接口,写出自己的Action类来。

IAction里面最重要的方法是run(),它也是事件触发以后执行的代码。其他的方法都是一些辅助性的方法,不是我们要关注的重点。为了能够将精力集中在我们所关注的事情上,通常我们不是实现IAction接口,而是通过继承org.eclipse.jface.action.Action这个抽象类来实现Action。下面我们通过一个例子来说明Action的用法。

Hello,Action!


首先我们先不管用户界面,先定义一个最简单的Action类。


 1 public class HelloAction extends Action{
 2     private Shell shell;
 3     
 4     public HelloAction(Shell shell) {    
 5         super("&Hello",Action.AS_PUSH_BUTTON);
 6         this.shell=shell;
 7     }
 8 
 9 
10     @Override
11     public void run() {
12         MessageDialog.openInformation(shell, "Hello", "Hello,Action!");
13     }
14     
15 }
16 

代码段 15

这段代码其实应该还是很好读懂的。带参的构造函数带进来一个Shell实例,而run()方法说明了这个Action的功能就是显示一个对话框。第5行中的代码调用了父类的构造函数,其中第一个参数是Action对应的文本,前面的&符号表明了H是热键,而第二个参数则是一个风格参数。如果大家继续向后看的话,就会发现这个Action被附加在了一个按钮上面,而按钮上显示的文本就是Hello,如果你定义的风格不是AS_PUSH_BUTTON而是AS_RADIO_BUTTON的话就会发现按钮已经不是一个纯粹的按钮了,而是一个单选钮。相应的其他风格可以参照Javadoc。


1 
 2 public class HelloJface extends ApplicationWindow {      
 3     public HelloJface(Shell shell) {
 4         super(shell);
 5     }
 6       @Override
 7     protected Control createContents(Composite parent) {
 8           HelloAction action=new HelloAction(parent.getShell());
 9           ActionContributionItem aci=new ActionContributionItem(action);
10           aci.fill(parent);
11           return parent;
12    }  
13    /**
14     * @param args
15     */
16    public static void main(String[] args) {
17 
18        HelloJface demo = new HelloJface(null);
19        demo.setBlockOnOpen(true);
20        demo.open();
21        Display.getCurrent().dispose();
22 
23    }
24 }

代码段 16

和前面一节的代码相比,我们只是修改了createContents方法。首先创建了一个HelloAction的实例,然后又创建了一个ActionContributionItem的实例,最后调用了这个实例的fill方法将按钮添加到窗口中,这就是全部了。是不是很简单呢?程序运行出来的效果如下图:


图 16

可能看了这个例子,你会认为ActionContributionItem这个类表示的就是一个按钮了。但是实际上并不是的,它在图形界面上表示成什么样子,随着不同的fill调用又有不同。在下一节中,我会向大家深入介绍Contribution Item以及JFace中的菜单,工具条等的应用。这一节就到这里结束了,因为刚刚换了工作环境,有很多事情需要去做,所以写得比较短,请大家见谅:)。
分享到:
评论

相关推荐

    SWT JFace 按键、事件、监听

    ### SWT JFace 按键、事件、监听 #### 概述 SWT(Standard Widget Toolkit)是Eclipse平台下的图形界面开发工具包,而JFace则是基于SWT之上的高级用户界面工具集。SWT提供了低级别的组件,用于创建跨平台的图形...

    swt/jface api帮助文档

    10. **模型-视图-控制器(MVC)**:JFace鼓励使用MVC模式来组织代码,使得业务逻辑和界面展示分离,提高了代码的可测试性和可重用性。 在学习和使用SWT和JFace API时,查阅这份中文帮助文档将非常有益。它会详细...

    SWT JFACE in Action(中文)

    在JFace中,视图(View)和编辑器(Editor)是两个重要的概念。视图通常用于显示应用程序的状态或提供某种功能,而编辑器则用于处理特定类型的数据或任务。JFace还引入了模型-视图-控制器(MVC)设计模式,使得...

    Eclipse SWT/JFace 书中 全部实例

    3. MVC模式:理解JFace如何运用MVC模式来分离业务逻辑和用户界面。 4. Dialogs:创建各种对话框,如MessageDialog、InputDialog、FileDialog等,处理用户输入和确认。 5. Views和Perspectives:构建Eclipse RCP...

    JFace一些资料

    2. **Viewer**:JFace中的Viewer是用于展示数据的组件,它可以是表、树或其他形式。Viewer提供了数据管理、排序、过滤等功能,并能与 SWT 控件如Table、Tree等无缝集成。 3. **Dialogs and Wizards**:JFace提供了...

    swt_jface_celleditor

    `swt_jface_celleditor` 标题和描述所涉及的知识点主要围绕如何在SWT/JFace中的TableViewer组件实现单元格的编辑功能,包括Text、Combo以及FileDialog这三种不同的编辑样式。 首先,SWT是Eclipse项目的一部分,它...

    JFace 类包(3.14)

    8. **Event Handling**:JFace 提供了一种基于观察者模式的事件处理机制,使得组件间可以响应特定的事件,增加了代码的灵活性和可扩展性。 在"JFace lib(3.14)"压缩包中,包含的库文件提供了上述功能的实现和接口。...

    mysource-jface

    这篇博客文章可能详细介绍了如何在实际开发中应用JFace,并且可能包含了一些示例代码来帮助读者理解其工作原理。 在Java编程中,JFace的作用是作为SWT的抽象层,使得开发者可以更加专注于业务逻辑,而不是底层的GUI...

    SWT/JFace从入门到精通

    - 扩展Eclipse:学习如何创建Eclipse插件,将SWT/JFace应用到Eclipse插件开发中。 5. 关键概念 - Display:Eclipse中的主显示对象,所有SWT组件都必须在其上创建。 - Composite:SWT中的容器类,可以包含其他SWT...

    swt/Jface中文教程

    例如,JFace中的向导框架可以方便地创建多步骤的用户交互流程,而无需关心底层的UI细节。 #### 1.3 实战应用 - **构建基于SWT/JFace的应用程序**:了解SWT/JFace的基本原理后,开发者可以利用这两款工具包来构建高...

    swt/jface中文教程

    SWT/JFace 的形成是为了解决传统 GUI 开发中的一些问题,如:平台相关性、难以使用、性能不佳等问题。SWT/JFace 的出现,提供了一种新的 GUI 开发方式,使开发者能够快速构建高效、美观的 GUI 应用程序。 SWT/JFace...

    swt/jface.jar

    标题中的"swt/jface.jar"是一个关键组件,它在Java开发环境中用于构建用户界面。SWT(Standard Widget Toolkit)是IBM开发的一个开源GUI库,它提供了与原生操作系统更紧密集成的图形用户界面控件。JFace是建立在SWT...

    SWT_JFace_in_action_jface_action_

    JFace通过提供视图、控制器和模型的结构,帮助开发者遵循MVC(Model-View-Controller)设计模式,从而使得代码更易于理解和维护。JFace还包含了Action框架,用于管理应用中的各种操作,如菜单项、按钮等。 在《SWT_...

    全面介绍SWT-JFace

    在"Oreilly.SWT.A.Developers.Notebook.Oct.2004.eBook-LiB.chm"这本书中,读者可以深入学习SWT和JFace的使用方法,包括控件的创建、事件处理、布局管理、数据模型的构建、对话框的使用,以及如何在Eclipse插件开发...

    SWT/JFace专题 --- SWT/JFace概述

    SWT (Standard Widget Toolkit) 和 JFace 是两个在Java中用于构建图形用户界面(GUI)的重要库,尤其在开发Eclipse插件时被广泛应用。它们是开源项目,由Eclipse基金会维护,为开发者提供了丰富的控件和高级UI设计...

    org.eclipse.jface.snippets

    JFace提供了一些核心服务,如数据绑定、事件处理、视图和对话框的构建,以及模型-视图-控制器(MVC)设计模式的实现。 2. **数据绑定**:JFace的数据绑定机制允许开发者将UI控件与业务模型对象直接关联,当数据发生...

    JFace教程

    在实际开发中,JFace 被广泛应用于构建各种桌面应用,特别是那些具有复杂数据处理需求的应用程序。例如,Eclipse IDE 自身就大量使用了 JFace 和 SWT 技术来构建其强大的功能界面。 #### 二、JFace的核心特性 1. *...

    org.eclipse.jface.rar

    6. **Event Handling**:JFace提供了事件和监听器机制,方便开发者响应用户交互和状态变化。 通过研究这个源代码,开发者可以学习到如何有效地利用JFace构建Eclipse插件,以及如何优雅地处理用户界面逻辑。这对于想...

    swt-jface入门

    【SWT/JFace 简介】 ...总之,SWT和JFace为Java开发者提供了强大的GUI开发工具,它们在Eclipse生态中扮演着重要角色。通过学习和实践SWT/JFace,开发者可以构建高效、美观且具有平台原生感的桌面应用程序。

    Swt JFace in Action 中文版

    6. **表和树组件**:探索Swt和JFace中的表格和树形视图组件,学习如何填充数据,以及实现排序、过滤等功能。 7. **拖放操作**:学习如何实现Swt和JFace中的拖放功能,增强用户交互体验。 8. **国际化与本地化**:...

Global site tag (gtag.js) - Google Analytics