- 浏览: 269100 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (152)
- lucene (5)
- java (12)
- eclipse (2)
- GEF (34)
- SWT/JFACE/PLUGIN (58)
- EMF (8)
- GMF (0)
- fckeditor (1)
- AIX (1)
- 云计算 (2)
- 使用 Grails 构建富 Internet 应用程序 (1)
- Grails (1)
- 动态调用动态语言 (2)
- W3C DOM (3)
- Google Maps (1)
- 优化 (1)
- WebSphere (1)
- NSIS (1)
- 计算机安全 (1)
- Mina (2)
- Draw2d (4)
- Compass (1)
- 原创诗集 (3)
- 人生 (1)
- 翻版 (1)
- OSGI (1)
- Ubuntu (2)
- Ireport (2)
最新评论
-
扬手就是一长鞭:
移动label也无法使得save可以执行。
让连线上的Label动起来吧 -
扬手就是一长鞭:
我的save是正常的,我添加删除node或者connectio ...
让连线上的Label动起来吧 -
扬手就是一长鞭:
我也是这扥写的,可是我双击label改变他的文字时,发现sav ...
让连线上的Label动起来吧 -
ae6623:
这段代码放到哪里??
控制拖拽范围 -
ae6623:
真牛!鼠标滚轮缩放GEF画布 ..
getGraphicalV ...
GEF实现用鼠标滑轮控制画布的放大与缩小
文章转自:http://blog.csdn.net/shrekmu/archive/2007/10/16/1826993.aspx
一、问题
SWT中如果添加一个Lost Focus事件后,会发现当窗体切换、最小化窗体等事件发生的时候都会激发Lost Focus事件,这显然不过友善。传统意义上的Lost Focus事件应该是只有焦点迁移到单前窗体中的某个空间的时候才需要激发Lost Focus事件。但是由于RCP程序中,一个窗体可能包含多个View和Editor,所以这个Listener实现了当焦点迁移到指定 Composite中时,激发LostFocus事件。
二、事件代码
三、使用方式
1、监听指定容器的Lost Focus事件
// 监听指定容器的Lost Focus事件
2、监听窗体的Lost Focus事件
};
一、问题
SWT中如果添加一个Lost Focus事件后,会发现当窗体切换、最小化窗体等事件发生的时候都会激发Lost Focus事件,这显然不过友善。传统意义上的Lost Focus事件应该是只有焦点迁移到单前窗体中的某个空间的时候才需要激发Lost Focus事件。但是由于RCP程序中,一个窗体可能包含多个View和Editor,所以这个Listener实现了当焦点迁移到指定 Composite中时,激发LostFocus事件。
二、事件代码
package study.swt.event; import org.eclipse.swt.SWT; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; /** *//** * <b>系统名称:</b>Digital Cinema心得--SWT学习与使用<br> * <b>技能名称:</b>监听指定范围内lost Focus事件的监听器<br> * <b> 处理说明:</b>SWT中如果添加一个Lost Focus事件后,会发现当窗体切换、最小化窗体等事件发生的时候都会激发 Lost Focus事件,这显然不过友善。传统意义上的Lost Focus事件应该是只有焦点迁移到单前窗体中的某个空间的时候才需要激发 Lost Focus事件。但是由于RCP程序中,一个窗体可能包含多个View和Editor,所以这个Listener实现了当焦点迁移到指定 Composite中时,激发LostFocus事件。。<br> * <b>变革履历:</b>2007/10/16 MuChunYu Create<br> * <br> * * @author Mu ChunYu * @version 1.0 2007/07/04 初版 * <p> */ public class FocusLostListener implements FocusListener ...{ /** *//** 定义取得焦点范围的Composite */ private Composite cmpParent = null; /** *//** 所监听的控件 */ private Control ctl = null; /** *//** Gained Focus事件的过滤器 */ private Listener filter = new Listener() ...{ /** *//** 处理事件 */ public void handleEvent(Event event) ...{ // 判断是否是指定Composite中的空间取得了焦点 if (isChildOf(cmpParent, (Control) event.widget)) ...{ if (ctl != (Control) event.widget) ...{ cmpParent.getDisplay().removeFilter(SWT.FocusIn, filter); dcFocusLost(new FocusEvent(event)); } } } /** *//** 判断是否之指定Composite的子控件 */ private boolean isChildOf(Composite cmpParent1, Control ctlChild) ...{ Composite cltParent = ctlChild.getParent(); while (cltParent != null) ...{ if (cltParent == cmpParent1) ...{ return true; } else ...{ cltParent = cltParent.getParent(); } } return false; } }; /** *//** * <b>機能概要:</b> 构造函数。<br> * <br> * <b>処理フロー:</b> <br> * <ul> * <li>保存信息 * <li>注册Focus监听器 * </ul> * * @param cmpParent 定义取得焦点范围的Composite * @param ctl 所监听的控件 * <p> */ public DCFocusLostListener(Composite cmpParent, Control ctl) ...{ this.cmpParent = cmpParent; this.ctl = ctl; ctl.addFocusListener(this); } /** *//** * <b>機能概要:</b> 取得焦点事件的处理。<br> * <br> * <b>処理フロー:</b> <br> * <ul> * <li>注册取得焦点事件的过滤器 * </ul> * * @param event Focus事件 * @deprecated 不需要使用。 * <p> */ @Override public void focusGained(FocusEvent event) ...{ registerFilter(); } /** *//** * <b>機能概要:</b> 注册取得焦点事件的过滤器。<br> * <br> * <b>処理フロー:</b> <br> * <ul> * <li>注册取得焦点事件的过滤器 * </ul> * * <p> */ public void registerFilter() ...{ ctl.getDisplay().removeFilter(SWT.FocusIn, filter); ctl.getDisplay().addFilter(SWT.FocusIn, filter); } /** *//** * <b>機能概要:</b> 失去焦点事件的处理。<br> * <br> * <b>処理フロー:</b> <br> * <ul> * <li>无处理 * </ul> * * @param event Focus事件 * @since 1.0 * @deprecated 不能使用。 使用dcFocusLost(FocusEvent event) * <p> */ @Override public void focusLost(FocusEvent event) ...{ } /** *//** * <b>機能概要:</b> 失去焦点事件的处理。<br> * <br> * * @param event Focus事件 * @since 1.0 * <p> */ public void dcFocusLost(FocusEvent event) ...{ } }
三、使用方式
1、监听指定容器的Lost Focus事件
// 监听指定容器的Lost Focus事件
DCFocusLostListener listenter = new DCFocusLostListener(cmpParent, m_Control) { public void dcFocusLost(FocusEvent event) { // TODO 业务处理 } }; // 如果控件已经取得了焦点,就需要手工调用registerFilter() listenter.registerFilter();
2、监听窗体的Lost Focus事件
// 监听窗体的Lost Focus事件 DCFocusLostListener listenter = new DCFocusLostListener(shell, m_Control) { public void dcFocusLost(FocusEvent event) { // TODO 业务处理 }
};
发表评论
-
选择workspace中的文件对话框
2011-04-09 17:57 1586ElementTreeSelectionDialog dial ... -
在插件中访问StatusLine
2011-01-17 11:26 1132WorkbenchWindow window = Platfr ... -
给RCP添加SVN功能
2011-01-03 17:26 1849三个步骤: 一、下载SVN插件到eclipse; 二、给RCP ... -
获得当前激活状态的Iproject
2010-11-30 12:48 1526/** * 获得当前工程 * @return ... -
让TableViewer支持Tab编辑
2010-10-16 08:57 1965高效的编辑无疑于tab操作,给TableViewer加tab操 ... -
实现Eclipse自身的log管理
2010-01-14 10:58 3327做插件开发的都知道当 ... -
自定义RCP外观
2010-01-13 21:52 4295如果说只需要改变RCP的皮肤可以参照IBM上的Eclipse程 ... -
SWT GC重绘心得
2010-01-13 01:10 5232如果有需求要将Composite的边框颜色改成红色,大家肯定就 ... -
在eclipse中获得当前所有打开的editor实例列表
2009-12-18 14:42 1576EditorPart[] parts = Platfor ... -
将应用默认使用XP风格
2009-12-09 16:54 1091从http://www.eclipse.org/swt/jav ... -
RCP中访问StatusLine详解
2009-11-26 15:40 2802首先给大家介绍各种情 ... -
扩展org.eclipse.ui.preferencePages的些许经验
2009-11-13 15:28 2131最近参考Eclipse插件开发 ... -
给视图添加快捷键
2009-10-11 02:46 1039上一篇博文中讲了用扩展的方式添加全局快捷键,现在本文用硬编码的 ... -
添加全局快捷键
2009-10-11 02:38 1448两种方法:一种扩展, ... -
让SWT中的text只能输入数字
2009-10-07 14:51 3173思路:给Text添加键盘输入事件,判断按下的键的ASCII码 ... -
通过ACTION的ID来获得ACTION
2009-09-28 11:43 2954现在又很多需求都需要动态去改变Action的enable/di ... -
动态关闭ViewPart
2009-09-24 18:36 1929IWorkbenchPage page = PlatformU ... -
设置TreeViewer的前景色和背景色
2009-09-23 11:54 1693让TreeViewerLabelProvider实现IColo ... -
给子控件和父控件添加相同的事件
2009-09-18 13:24 1298方法很多种,我这里介绍种最简单易懂的;触发事件得有listen ... -
SWT时间选择器
2009-09-04 16:50 3324package com.netunit.workbench.t ...
相关推荐
使Excel嵌入到SWT窗口中 知识点一:Eclipse版本和jdk版本的选择 在本例中,我们使用的是Eclipse 3.3.1版本和jdk 5.0版本。Eclipse是一个开源的集成开发环境(IDE),它支持多种编程语言,包括Java、C++、Python等...
### SWT JFace 按键、事件、监听 #### 概述 SWT(Standard Widget Toolkit)是Eclipse平台下的图形界面开发工具包,而JFace则是基于SWT之上的高级用户界面工具集。SWT提供了低级别的组件,用于创建跨平台的图形...
详细描述了SWT组件的实际应用 详细在说明书
我们可以通过添加这样的监听器来实现窗口靠边时的自动隐藏。 3. **Bounds**:Shell对象有一个Bounds属性,它包含了窗口的左上角坐标(x, y)和宽度(width)、高度(height)。我们可以检查窗口的Bounds来判断是否...
根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...
java SWT 基本窗口 组件 开发
在SWT中,我们可以通过实现`MouseListener`接口来监听鼠标事件。`MouseListener`接口包含三个方法:`mouseDown()`, `mouseUp()`, 和 `mouseDoubleClick()`。在这个例子中,我们关心的是`mouseDoubleClick()`方法。...
SWT事件处理机制是其核心特性之一,它允许开发者响应各种用户交互行为,从而实现动态和响应式的界面设计。 ### SWT事件类型及处理 #### ControlEvent:控件事件 - **监听器和适配器**:`ControlListener`和`...
本篇将详细讲解如何使用SWT来创建一个基本的Shell窗口。 首先,我们需要理解Shell在SWT中的含义。Shell是SWT中的顶级窗口,类似于其他GUI库中的Frame或Window。它是应用程序的主窗口,可以包含各种控件,如按钮、...
在压缩包内的文件中,"SWT.pdf"可能是完整的SWT教程文档,详细阐述了SWT的各个方面,包括组件的使用、布局管理、事件处理等。而"www.pudn.com.txt"可能是来源于发布或下载这个教程的网站的链接或者说明,可能包含了...
因此,在SWT中处理事件通常需要在`handleEvent`方法内根据事件类型进行判断。 对比三者,AWT的事件处理相对简单但略显笨重,Swing提供了更丰富的功能和更优雅的代码结构,而SWT则强调与原生系统的紧密集成和高性能...
在SWT中,窗口(Shell)是应用程序的基本容器,它在任务栏上显示为一个图标。默认情况下,Shell会自动创建并显示任务栏图标。要实现隐藏任务栏图标的功能,我们需要深入理解SWT的内部机制,并可能需要对源码进行一定...
这个"SWT视频播放器"项目显然是一款利用SWT库来实现的视频播放软件,它具有基本的视频播放功能,能够加载并播放视频文件。 在深入探讨SWT视频播放器的相关知识点之前,我们先来了解一下SWT本身。SWT是Java中替代AWT...
// 更新图片位置,确保其在Shell范围内 // 这里需要具体计算,保持图片和shell的相对位置不变 }); ``` 5. **处理窗口大小变化**: 当窗口大小改变时,我们也需要同步调整图片的大小,以保持背景的完整: ```...
在这个“SWT/JFACE 客户端登录窗口例子”中,我们可以预期会看到如何使用这两个库来创建一个基本的登录窗口。通常,这样的窗口会包含用户名和密码输入框,以及登录、取消等按钮。以下是一些可能涉及的知识点: 1. *...
SWT原生按钮不够美观,本案例实现自定义圆形按钮,代码可直接下载使用。
SWT的设计目标是提供一个与平台相关的、高效的GUI库,它通过直接调用操作系统API来实现,而不是像Java Swing那样依赖Java抽象窗口工具包(AWT)和Java 2D。这种设计使得SWT应用程序在性能上通常优于Swing,并且可以...
另外,为了增加用户体验,开发者可能还实现了动画效果,如棋子移动的过程,这需要利用 SWT 的定时器(Timer)功能,通过在一定时间间隔内更新棋子的位置来模拟动态效果。 压缩包中的"codesc.net"可能是源代码文件,...
这本书可能详细讲解了如何在Eclipse环境中使用SWT和JFace进行实际开发,包括创建窗口、添加组件、处理事件、设计布局、数据绑定等方面,还可能包含了一些实用技巧和最佳实践。 总之,SWT为Java开发者提供了一个...
在这个名为"四则运算计算器SWT版"的项目中,我们主要讨论的是如何利用SWT来实现一个具有基本四则运算(加、减、乘、除)以及括号运算功能的计算器应用。 首先,我们需要了解SWT的核心概念。SWT是基于操作系统原生的...