Eclipse插件开发实战2——SWT

一、SWT简介

SWT(StandardWidget Toolkit) 标准小窗口工具箱,一开源的GUI编程框架,与AWT/Swing有相似的用处,eclipse就是用SWT开发的。SWT主要是用来编写java桌面应用程序的,类似的还有swing。提供可移植API,并与底层本机OS GUI平台紧密集成,它是一个与本地窗口系统集成在一起的小部件集和图形库。SWT由JNI(Java Native Interface,Java本机接口)调用操作系统的内部API,因此运行速度快,能够获得与操作系统的内部应用程序相同的外观。

除此之外,JFace是一个用户界面工具箱,也是一个易用、功能强大的图形包,它简化了常见的图形用户界面的编程任务。SWT和JFace都是Eclipse平台上的主要组件。JFace是在SWT的基础上创建的,但JFace并不能完全覆盖SWT的功能。由于JFace的功能更强大,因此在java里做图形界面开发时一般优先选用JFace。(在此特别强调做图形界面是用java,其实界面设计用C#更省事)

SWT是Eclipse图形API的基础。SWT中常用的包有:

1.org.eclipse.swt.widgets :最常用的组件基本都在此包中,如Button、Text、Label、Combo等。其中两个最重要的组件是Shell和Composite。Shell相当于应用程序的主窗体;Composite是容纳组件的容器,相当于SWING中的Panel对象。

2.org.eclipse.swt.layout :主要的界面布局方式在此包中。SWT对组件的布局也采用了AWT/SWING中的Layout和Layout Data结合的方式。

3.org.eclipse.swt.custom :对一些基本图形组件的扩展在此包中,比如其中的CLabel就是对标准Label组件的扩展,在CLabel上可以同时加入文字和图片。在此包中还有一个新的布局方式StackLayout。

4.org.eclipse.swt.event :SWT采用了和AWT/SWING一样的事件模型,在包中可以找到事件监听类和相应的事件对象。比如鼠标事件监听器MouseListener,MouseMoveListener等,及对应的事件对象MouseEvent。

5.org.eclipse.swt.graphics :包含针对图片、光标、字体或绘图API。比如,可通过Image类调用系统中不同类型的图片文件。

6.org.eclipse.swt.ole.win32 :对不同平台,SWT有一些针对性的API。例如在Windows平台可以通过此包很容易的调用OLE组件,这使得SWT程序也可以内嵌IE浏览器或Word、Excel等程序。

二、控件及布局

SWT提供菜单menu、工具栏toolbar、下拉菜单、按钮(Button类)、标签(Label类)、文本框(Text类)、下拉框(Combo类)、列表框(List类)等。

为了说明问题,下面给出一个简单的button程序,其他的控件使用大体如此:

package com.abc.util;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
public class SWT{public static void main(String[] args){Display display = new Display();Shell shell = new Shell(display);  //shell为程序主窗体//shell.setLayout(null);  //设置shell布局方式shell.setText(“按钮”);   //设置主窗体标题Button btn1 = new Button(shell, SWT.NULL);  //创建默认按钮btn1.setText(“Button1”);  btn1.setBounds(10, 10, 75, 30);Button btn2 = new Button(shell, SWT.PUSH|SWT.BORDER);btn2.setText(“Button2”);btn2.setBounds(90, 10, 75, 30);// 为Button的时间定义监听器button.addSelectionListener(new SelectionAdapter(){public void widgetSelected(SelectionEventarg0) {MessageBox messageBox = new MessageBox(shell, SWT.OK | SWT.ICON_INFORMATION | SWT.APPLICATION_MODAL);messageBox.setMessage("按下了(" + button.getText() + ")按钮");messageBox.open();}
});shell.pack();  //自动调整主窗体大小shell.open();  //打开主窗体while(!shell.isDisposed()){  //如果主窗体没有关闭if(!display.readAndDispatch()){  //如果display不忙display.sleep();  //休眠}//释放display对象display.dispose();}}
}

三、事件响应机制

1.eclipse RCP开发事件响应机制是通过声明command组件来实现,其把UI中菜单、按钮并与事件响应函数或类关联起来。举个例子,关联就是把toolbar下新建一个command(附属comand),然后把附属command的Id改为rcpprojiect.commands.Translator,command通过ID相关联。command里会定义Handler.java类,这里就是处理事件的类了,这个在具体后面插件开发步骤里再根据依赖结构详细写。

2.command组件在plugin.xml中以org.eclipse.ui.commands作为扩展点

3.一个事件响应的基本过程,需要3个方面:(1)UI;(2)Command组件;(3)事件处理函数;

转载于:https://www.cnblogs.com/DianaCody/p/5425687.html

【eclipse插件开发实战】Eclipse插件开发2——SWT相关推荐

  1. 如何在Eclipse 3.6.2中安装swt/JFace

    如何在Eclipse 3.6.2中安装swt/JFace 原文http://blog.csdn.net/nkliming/article/details/7790288 我之前一直想安装过swt,但是 ...

  2. 【Maven】maven 插件开发实战

    [Maven]maven 插件开发实战 附上我历时三个月总结的 Java 面试 + Java 后端技术学习指南,这是本人这几年及春招的总结,目前,已经拿到了大厂offer,拿去不谢! 下载方式 1.  ...

  3. linux eclipse报错日志,centos6.8命令行启动eclipse报org.eclipse.swt.SWTError错误

    系统版本:centos6.8 JDK 版本:jdk1.8.0_111 eclipse版本:eclipse neon.1 问题描述: [1]在xwindow界面可以正常启动eclipse [2]在命令行 ...

  4. CloudIDE插件开发实战:教你如何调试代码

    摘要:今天我们来重点介绍下CloudIDE插件的调试技巧,在插件开发过程中调试作为重要的问题分析和定位手段能够有效帮助开发者提升插件质量. 今天文章中的样例工程我们继续以上一篇<实战CloudI ...

  5. 张利国java pdf_Java Web开发与实战–Eclipse+Tomcat+Servlet+JSP整合应用 (刘伟张利国) PDF...

    资源名称:Java Web开发与实战–Eclipse+Tomcat+Servlet+JSP整合应用 (刘伟,张利国) PDF 第1章 web开发工具的安装与使用 第2章 web编程技术基础 第3章 s ...

  6. eclipse java jde,Eclipse平台入门之一:什么是Eclipse,我们将开始介绍Java 开发环境(JDE)。...

    为试验一下 Java 开发环境,我们将创建并运行一个"Hello, world"应用程序.使用 Java 透视图,右键单击"Hello"项目,选择 New=&g ...

  7. eclipse oxygen java7,Eclipse Oxygen:M7重点在于可用性

    [IT168 评论]4.7版本是EclipseOxygen的第七个里程碑.跟以前的版本不同,其重点主要是使Java开发工具(JDT)和插件开发环境(PDE)更优秀,而M7的重点在于可用性,平台也有一些 ...

  8. Eclipse基金会发布Eclipse Photon IDE

    Eclipse基金会发布了最新版本的Eclipse IDE.Eclipse Photon带来对Java 10和Java EE 8的支持,增强了PHP开发工具和Dark主题等功能. \\ Eclipse ...

  9. Eclipse 工作空间(Workspace)---Eclipse教程第07课

    Eclipse 工作空间(Workspace) eclipse 工作空间包含以下资源: 项目 文件 文件夹 项目启动时一般可以设置工作空间,你可以将其设置为默认工作空间,下次启动后无需再配置: 工作空 ...

  10. Eclipse插件:Eclipse Color Theme

    摘自:http://blog.csdn.net/macong01/article/details/7380587#comments 安装方法: Eclipse 3.6 (Helios)版本,可以打开 ...

最新文章

  1. [CSS]复选框单选框与文字对齐问题的研究与解决.
  2. Functional Language
  3. 做完系统回来计算机连接不上网络,重装系统后电脑连不上网怎么回事
  4. python数据科学实战_Python数据科学实战第三讲作业HW4
  5. Python 加密解密
  6. 剑指offer31-栈的压入、弹出序列
  7. Python编程中一定要注意的那些“坑”(一)
  8. CCCC-GPLT L1-038. 新世界 团体程序设计天梯赛
  9. Unix/Linux入门篇
  10. Ubuntu18.04 下的Gif录制工具
  11. STM8S003F3 使用ADC:固件库版本与寄存器版本
  12. struts1的actionform
  13. 多个Excel文件合并到一个Excel文件的多个工作表(Sheet)里
  14. A082_springcloud_微服务场景_Eureka_负载均衡
  15. 设置电脑 保护视力 还有桌面默认颜色
  16. 如何将图片合并成一个pdf文件?
  17. 老式十字锁自动碰锁,换锁芯
  18. win10蓝牙故障无法正常使用的有效解决方法
  19. 如何控制退款率和提高复购率的技巧(纯干货分享)
  20. ASCII表完整版(包含16进制对应表)——看看16进制与10进制的转化

热门文章

  1. MimoLive for Mac(视频直播制作软件) 支持big sur
  2. 利用python开发微信JS-JDK(基于python3.6)
  3. ORACLE数据恢复方法(提交事务也可以)
  4. sort排序和uniq使用
  5. One to One 的数据库模型设计与NHibernate配置
  6. 自己写的一个ffmpeg时间戳分析工具
  7. Django模板过滤
  8. cisco交换机命令大全(11)
  9. 使用redis作为缓存,数据还需要存入数据库中吗?
  10. Windows环境下安装python+tensorflow