【eclipse插件开发实战】Eclipse插件开发2——SWT

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)事件处理函数;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: Eclipse插件开发是指在Eclipse开发环境中创建和扩展插件,以增强Eclipse的功能和定制化。在Eclipse中的RCP项目中,可以使用当前Eclipse开发环境存在的bundle,并且可以拿到源代码,这意味着可以使用Eclipse暴露出来的工具类来进行插件开发。\[1\] Eclipse本身就是一个开放的平台,其中的各个部分如菜单、工具栏、视图、编辑器等都可以成为插件开发的目标,每个扩展部分都可以被讲解成单独的一章。\[2\] 在Eclipse中创建插件工程可以通过选择Plug-in Development或Plug-ins来实现,如果没有找到这些选项,可以参考相关文章进行设置。\[3\] 插件开发可以通过扩展Eclipse的功能,实现自定义的功能和界面,以满足特定的需求。 #### 引用[.reference_title] - *1* *2* [eclipse插件开发简介](https://blog.csdn.net/clamaa/article/details/84602211)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【eclipseeclipse插件开发(一)](https://blog.csdn.net/weixin_42319496/article/details/119372674)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值