-
Eclipse RCP SelectionListener 执行两次5
大伙们,小弟最近有一个问题关于Eclipse RCP的,就是为什么在两个视图间进行消息传递,监听的视图执行了两次?
我的代码如下:
事件提供者:package myproject; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; public class View extends ViewPart { public static final String ID = "myproject.view"; private TableViewer viewer; /** * The content provider class is responsible for providing objects to the * view. It can wrap existing objects in adapters or simply return objects * as-is. These objects may be sensitive to the current input of the view, * or ignore it and always show the same content (like Task List, for * example). */ class ViewContentProvider implements IStructuredContentProvider { public void inputChanged(Viewer v, Object oldInput, Object newInput) { } public void dispose() { } public Object[] getElements(Object parent) { if (parent instanceof Object[]) { return (Object[]) parent; } return new Object[0]; } } class ViewLabelProvider extends LabelProvider implements ITableLabelProvider { public String getColumnText(Object obj, int index) { return getText(obj); } public Image getColumnImage(Object obj, int index) { return getImage(obj); } public Image getImage(Object obj) { return PlatformUI.getWorkbench().getSharedImages().getImage( ISharedImages.IMG_OBJ_ELEMENT); } } /** * This is a callback that will allow us to create the viewer and initialize * it. */ public void createPartControl(Composite parent) { viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); viewer.setContentProvider(new ViewContentProvider()); viewer.setLabelProvider(new ViewLabelProvider()); // Provide the input to the ContentProvider viewer.setInput(new String[] {"One", "Two", "Three"}); this.getSite().setSelectionProvider(viewer); } /** * Passing the focus request to the viewer's control. */ public void setFocus() { viewer.getControl().setFocus(); } }
事件监听者:package myproject; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.part.ViewPart; public class Detail extends ViewPart implements ISelectionListener { public static final String ID = "myproject.detail"; private Text text; public Detail() { // TODO Auto-generated constructor stub } @Override public void selectionChanged(IWorkbenchPart part, ISelection selection) { IStructuredSelection structuredSelection = (IStructuredSelection) selection; Object obj = structuredSelection.getFirstElement(); if(obj != null) { //这里执行了两次! System.out.println(obj); } } @Override public void createPartControl(Composite parent) { text = new Text(parent, SWT.NONE); text.setBounds(20, 20, 100, 15); this.getSite().getPage().addSelectionListener(View.ID, this); } @Override public void setFocus() { // TODO Auto-generated method stub } }
即selectionChanged这个方法执行了两次,太不解了!
望大家能帮手看看为什么,谢谢了。2014年1月04日 22:27
目前还没有答案
相关推荐
Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序。它提供了一整套工具和功能,使得开发者可以构建出具有丰富用户界面的应用。在开发完成后,我们需要将这些应用打包并发布,以便用户...
10. **发布和部署**:最后,了解如何打包和部署Eclipse RCP应用,包括生成可执行的RCP产品,以及配置启动参数,以便在目标环境中运行。 通过这个压缩包中的教程和源代码,开发者不仅可以学习到Eclipse RCP的基本...
Eclipse RCP,全称Eclipse Rich Client Platform,是一个基于Java的框架,用于构建桌面应用程序。这个框架由Eclipse基金会维护,是Eclipse IDE的一部分,允许开发者创建功能丰富的、可扩展的应用程序,拥有类似IDE的...
2. Runtime:Eclipse RCP 的运行时环境,提供了应用程序的执行环境。 3. Workbench:Eclipse RCP 的工作台,提供了应用程序的用户界面和交互机制。 4. View:Eclipse RCP 的视图机制,提供了多种视图类型和视图之间...
【标签】"eclipse RCP mp3 mp3工程"进一步强调了这个项目的两大关键元素:Eclipse RCP平台和MP3处理。这表明项目的核心是利用Eclipse RCP的技术来处理MP3音频格式,可能涉及到解析MP3文件、播放控制、元数据处理等...
《ECLIPSE+RCP应用系统开发方法与实战》这本书是高岗先生关于使用Eclipse RCP(Rich Client Platform)进行应用系统开发的一本实战指南。Eclipse RCP是Eclipse IDE的一部分,它提供了一个框架,使得开发者可以构建...
Eclipse RCP是一种基于Eclipse平台的富客户端平台技术,它允许开发者创建独立于Eclipse环境的Java桌面应用程序。RCP通过提供一套标准组件和API,简化了桌面应用程序的开发流程,使开发者能够专注于业务逻辑而非界面...
eclipse RCP Plug-in开发自学教程 eclipse RCP(Rich Client Platform)是一种基于eclipse的插件式开发平台,允许开发者使用eclipse结构风格设计弹性的可扩展的应用程序。RCP插件式开发方式可以重用eclipse中的方法...
10. **部署与打包**:最后,学习如何将Eclipse RCP应用打包成可执行的RCP产品,包括生成启动配置、设置依赖关系等。 通过对“Eclipse RCP 例子程序”的深入学习和实践,开发者不仅可以掌握Eclipse RCP的基本使用,...
13. **部署与发布**:Eclipse RCP应用可以打包为可执行的RCP产品,通过Eclipse PDE工具进行发布,确保用户可以在各种平台上运行。 通过学习和实践这些知识点,开发者可以熟练掌握Eclipse RCP,构建出高效、稳定且...
### Eclipse RCP 插件开发指南 #### Eclipse RCP Plugin 开发快速入门 Eclipse RCP(Rich Client Platform)插件开发是构建基于Eclipse框架的应用程序的核心技术之一。本指南旨在帮助开发者从零开始掌握Eclipse ...
部署方面,Eclipse RCP应用通常打包为一个可执行的JAR或ZIP文件(称为RCP产品)。产品配置文件定义了运行时环境的详细信息,如启动参数、插件列表等。你可以使用PDE的打包工具生成最终的部署包。 最后,测试和调试...
《Eclipse RCP与Spring OSGi:技术详解与最佳实践》由资源的Eclipse专家亲自执笔,并得到了Eclipse官方技术社区的强烈推荐,权威性毋庸置疑!内容全面,系统讲解了利用Eclipse RCP和Spring OSGi开发大规模Java应用的...
在本文中,我们将深入探讨如何使用Eclipse RCP(Rich Client Platform)实现文本内容的对比功能。Eclipse RCP是一个强大的开发框架,它允许开发者构建桌面应用,而文本内容对比则是许多开发工具中的一个基本特性,...
Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序。它基于Java,由Eclipse基金会维护,是Eclipse IDE的核心组成部分。RCP允许开发者利用已有的插件系统构建可定制、模块化的应用,具有...
Eclipse RCP 学生管理平台 执行程序
在Eclipse RCP中,“应用程序”指的是运行时的环境,而“产品”则是指最终发布的可执行软件包。 - **应用程序**:通常包含多个插件和视图,是开发阶段的主要对象。 - **产品**:是在应用程序基础上构建的一个完整的...
在IT行业中,Eclipse RCP(Rich Client Platform)是一个强大的框架,用于构建桌面应用程序。它基于Java语言,由Eclipse基金会开发,为开发者提供了一套完整的工具集来创建功能丰富的、可扩展的应用程序。"菜鸟...
命令是Eclipse RCP中执行特定操作的关键元素。它们可以被绑定到菜单项、工具栏按钮或其他UI元素上。定义命令涉及创建一个命令对象,并将其注册到工作台中。此外,还需要定义命令的贡献点,以便在适当的位置显示相应...
在Eclipse RCP中,有两种方法可以将jar文件添加到classpath中。第一种方法是将jar文件添加到Build Path中,第二种方法是将jar文件添加到Extra ClasspathEntries中。我们可以任选一种方法,但是不要两种方法同时使用...