天天看点

【插件开发】—— 4 SWT编程须知

  根据前两篇博文,应该对插件开发有所了解。

前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图

  之前学过java的朋友,多少页会一些关于swing的东西。那么这里的swt就是eclipse插件所应用到的小部件开发框架。

  里面包含了大量的桌面控件,并且进行了一系列的优化整合,相对于swing,极大的减少了内存的消耗。而且关于资源的释放也需要开发者注意,需要特定的手动删除,但是比如一个部件的子部件会随着该部件的销毁而销毁。

  下面看一下开发中常用的一些部件模型,这里介绍的并不全,小控件其实有很多很多,这里就简单的介绍几种:

  

【插件开发】—— 4 SWT编程须知

  这里widget是一个超类,所有的部件都继承与这个类。它也提供了一些常用的方法,比如添加一些监听,获取常用的信息等等。

  最常用的还要数control了,因为很多button label控件都是继承这个类,在开发中经常使用的方法就是

  addmouselistener()进行鼠标点击的监听

  setbounds 进行控件的重新绘制

  等等。具体的函数,大家可以通过开发多留意一下,就行了。

  eclipse插件开发的程序大多有个不成文的规定,一个程序活动期间,只能有一个dispaly对象,但是可以有多个shell对象。那么,什么是dispaly,什么又是shell呢。

【插件开发】—— 4 SWT编程须知

  这里红色箭头显示的就是一个display,也就是一个底层的应用实例。如果这个实例没有被销毁,而程序意外停止了,那么是不能重新运行的。也就是说,运行期间,一个应用程序,只能有一个display。就像显示器与窗口内的内容,只有一个显示器,但是显示器内部可以显示多个文件内容。

  绿色箭头对应的就是shell,一个shell相当于一个活动的窗口,可以在里面添加各种小部件,组成一个丰富的应用界面。

  综上,一个display可以有多个shell,但是只有一个display(适用于普通情况).!

  接下来介绍一下如何不启动一个eclipse 插件工程,来开发swt。这个过程很多教材上都有描述,因此这里只提供了上面例子所对应的代码。

  要注意的是,最后要释放资源,shell是挂载到dispaly上面(原谅我用挂载这个词,linux里面挂载比较生动),因此销毁display的时候,可以自动的销毁shell对象。但是color并不是通过挂载方式创建的,因此要独立的释放。

  这个函数代码在一般 工程 里面就可以运行,但是缺少一个jar包,swt的jar包,这个jar包在eclipse的plugins文件夹下就可以找到。可以通过引入的方式,引入到工程中。

  其实只需要swtx86这个jar包就可以了,source是源代码,可以让我跟踪调试swt的源码。

【插件开发】—— 4 SWT编程须知

  为了后面的测试使用,这里可以把这段代码进行提取。这样之后的main函数的类只要继承这个abstractexample就可以进行窗口的编辑了。

作者:xingoo