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(Standard Widget Toolkit)是Eclipse平台下的图形界面开发工具包,而JFace则是基于SWT之上的高级用户界面工具集。SWT提供了低级别的组件,用于创建跨平台的图形...
10. **模型-视图-控制器(MVC)**:JFace鼓励使用MVC模式来组织代码,使得业务逻辑和界面展示分离,提高了代码的可测试性和可重用性。 在学习和使用SWT和JFace API时,查阅这份中文帮助文档将非常有益。它会详细...
在JFace中,视图(View)和编辑器(Editor)是两个重要的概念。视图通常用于显示应用程序的状态或提供某种功能,而编辑器则用于处理特定类型的数据或任务。JFace还引入了模型-视图-控制器(MVC)设计模式,使得...
3. MVC模式:理解JFace如何运用MVC模式来分离业务逻辑和用户界面。 4. Dialogs:创建各种对话框,如MessageDialog、InputDialog、FileDialog等,处理用户输入和确认。 5. Views和Perspectives:构建Eclipse RCP...
2. **Viewer**:JFace中的Viewer是用于展示数据的组件,它可以是表、树或其他形式。Viewer提供了数据管理、排序、过滤等功能,并能与 SWT 控件如Table、Tree等无缝集成。 3. **Dialogs and Wizards**:JFace提供了...
`swt_jface_celleditor` 标题和描述所涉及的知识点主要围绕如何在SWT/JFace中的TableViewer组件实现单元格的编辑功能,包括Text、Combo以及FileDialog这三种不同的编辑样式。 首先,SWT是Eclipse项目的一部分,它...
8. **Event Handling**:JFace 提供了一种基于观察者模式的事件处理机制,使得组件间可以响应特定的事件,增加了代码的灵活性和可扩展性。 在"JFace lib(3.14)"压缩包中,包含的库文件提供了上述功能的实现和接口。...
这篇博客文章可能详细介绍了如何在实际开发中应用JFace,并且可能包含了一些示例代码来帮助读者理解其工作原理。 在Java编程中,JFace的作用是作为SWT的抽象层,使得开发者可以更加专注于业务逻辑,而不是底层的GUI...
- 扩展Eclipse:学习如何创建Eclipse插件,将SWT/JFace应用到Eclipse插件开发中。 5. 关键概念 - Display:Eclipse中的主显示对象,所有SWT组件都必须在其上创建。 - Composite:SWT中的容器类,可以包含其他SWT...
例如,JFace中的向导框架可以方便地创建多步骤的用户交互流程,而无需关心底层的UI细节。 #### 1.3 实战应用 - **构建基于SWT/JFace的应用程序**:了解SWT/JFace的基本原理后,开发者可以利用这两款工具包来构建高...
SWT/JFace 的形成是为了解决传统 GUI 开发中的一些问题,如:平台相关性、难以使用、性能不佳等问题。SWT/JFace 的出现,提供了一种新的 GUI 开发方式,使开发者能够快速构建高效、美观的 GUI 应用程序。 SWT/JFace...
标题中的"swt/jface.jar"是一个关键组件,它在Java开发环境中用于构建用户界面。SWT(Standard Widget Toolkit)是IBM开发的一个开源GUI库,它提供了与原生操作系统更紧密集成的图形用户界面控件。JFace是建立在SWT...
JFace通过提供视图、控制器和模型的结构,帮助开发者遵循MVC(Model-View-Controller)设计模式,从而使得代码更易于理解和维护。JFace还包含了Action框架,用于管理应用中的各种操作,如菜单项、按钮等。 在《SWT_...
在"Oreilly.SWT.A.Developers.Notebook.Oct.2004.eBook-LiB.chm"这本书中,读者可以深入学习SWT和JFace的使用方法,包括控件的创建、事件处理、布局管理、数据模型的构建、对话框的使用,以及如何在Eclipse插件开发...
SWT (Standard Widget Toolkit) 和 JFace 是两个在Java中用于构建图形用户界面(GUI)的重要库,尤其在开发Eclipse插件时被广泛应用。它们是开源项目,由Eclipse基金会维护,为开发者提供了丰富的控件和高级UI设计...
JFace提供了一些核心服务,如数据绑定、事件处理、视图和对话框的构建,以及模型-视图-控制器(MVC)设计模式的实现。 2. **数据绑定**:JFace的数据绑定机制允许开发者将UI控件与业务模型对象直接关联,当数据发生...
在实际开发中,JFace 被广泛应用于构建各种桌面应用,特别是那些具有复杂数据处理需求的应用程序。例如,Eclipse IDE 自身就大量使用了 JFace 和 SWT 技术来构建其强大的功能界面。 #### 二、JFace的核心特性 1. *...
6. **Event Handling**:JFace提供了事件和监听器机制,方便开发者响应用户交互和状态变化。 通过研究这个源代码,开发者可以学习到如何有效地利用JFace构建Eclipse插件,以及如何优雅地处理用户界面逻辑。这对于想...
【SWT/JFace 简介】 ...总之,SWT和JFace为Java开发者提供了强大的GUI开发工具,它们在Eclipse生态中扮演着重要角色。通过学习和实践SWT/JFace,开发者可以构建高效、美观且具有平台原生感的桌面应用程序。
6. **表和树组件**:探索Swt和JFace中的表格和树形视图组件,学习如何填充数据,以及实现排序、过滤等功能。 7. **拖放操作**:学习如何实现Swt和JFace中的拖放功能,增强用户交互体验。 8. **国际化与本地化**:...