SWT(Standard Widget Toolkit)是IBM推出的“基于java”的图形界面开发库,我之所以说它是“基于java”的意思是程序员编写代码的时候是使用java语言,事实上SWT的底层实现是C语言完成的。但是这些对程序员是透明的。

  我们使用SWT开发GUI程序的时候,直接用SWT API来写。事实上很多java的代码是通过JNI去掉用C代码来实现的。针对不同的平台每个类有不同的实现方式,这篇文章的目的不在于讲述SWT的设计原理,如果你对这些感兴趣的话可以参考http://www.eclipse.org/articles/Article-SWT-Design-1/SWT-Design-1.html。

  下面开始介绍如何使用SWT,首先我假设你已经安装了Eclipse3.0,当然其他的版本也可以,如果还没有的话从www.eclipse.org上去下载。

  运行Eclipse,切换到java透视图下面,从Package explore里面新建一个java project。名称为Test。

  在Libraries里面选择Add external JARs来添加运行SWT所需要的类库,这个和系统相关的,比如我在windows xp下,地址为:D:eclipsepluginsorg.eclipse.swt.win32_3.0.0wswin32swt.jar。把它添加进来,建议做一个variables指向这个swt.jar文件,以后直接添加variables就可以了。

  编写java代码,例如

  import org.eclipse.swt.widgets.*;
  import org.eclipse.swt.*;
  public class SWTHello {
  public static void main(String[] args) {
  Display display = new Display();
  Shell shell = new Shell(display);
  Label label = new Label(shell, SWT.NONE);
  label.setText("Hello, World!");
  shell.pack();
  label.pack();
  shell.open();
  while(!shell.isDisposed())
   if(!display.readAndDispatch())
    display.sleep();
    display.dispose();
    label.dispose();
  }
  }

  配置运行环境,由于SWT程序运行的时候要用到本机资源,如果你现在运行上面的程序的时候会出现错误,类似于java.lang.UnsatisfiedLinkError: no swt-win32-2133 in java.library.path”,因此你必须指定所需的DLL的位置,具体做法是:从菜单run->run切换到运行配置界面,选择Arguments在VM Arguments里面写入-Djava.library.path=例如在我的机器上DLL的地址为D:eclipsepluginsorg.eclipse.swt.win32_3.0.0oswin32†。这样每次运行都要配置显得有点麻烦,所以建议你在环境变量PATH里面添加这个包括DLL的路径。

  运行程序,你会看到你的第一程序的效果 :) 我的感觉是挺不错的,速度要比Swing/AWT快。

  关于如何使用SWT,请参考www.eclipse.org上面的相关文章,多看看AWT API,多写一些代码!

开发基于Java的图形用户界面的更多相关文章

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. ios – 未捕获的异常:CALayer位置在执行动画时包含NaN

    我在iPad上运行时在应用程序中收到此错误:Uncaughtexception:CALayerpositioncontainsNaN相同的代码在iPhone上运行良好.我知道,分配的帧包含NaN值,我用CGRectEmpty函数检查了这个并将该帧设置为CGRectZero,但它不起作用.我从这里得到了这个工作代码,https://stackoverflow.com/a/7045916/160323

  3. 使用Angular.js开发的注意事项

    这篇文章主要记录了一些在学习和使用angular.js踩到的坑和需要注意的点,方便以后自己查阅,也给同样遇到这些问题的朋友们一些帮助,有需要的朋友们下面来一起看看吧。

  4. JSP开发入门(五)--JSP其他相关资源

    JSP其他相关资源:ServletsandJavaServerPages(JSP)1.0:ATutorialhttp://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/JavaServerPagesTM:ADeveloper'sPerspectivehttp://developer.java.sun.com/developer/technicalArtic

  5. 一个开发人员眼中的JSP技术(上)

    本文从一个开发人员的角度对JSP技术做了一个全面介绍。在JSP网页中,要把用户界面和应用程序分开可以考虑在网页设计人员和开发人员之间执行一个非常方便的授权任务。如果需要的话,JSP网页还可以进行预编译。开发人员可以提供定制化的JSP标签库。同样,开发人员也无须一个个编辑页面而只须对组件进行合理的改变。通常,JSP允许开发人员向许多网页设计人员分发功能性应用程序。这就意味着JSP注释并不返回到用户的浏览器中。

  6. EJB 3.0 开发指南之定时服务

    在EJB2.1的规范中需要实现ejbTimeout方法,当然还有ejbPassivate、ejbRemove等方法。在EJB3.0中,只有你想用它们的时候,你才必须创建它们,否则不必实现。将来我们开发的EJB也都是这样命名。Client.java:测试EJB的客户端类。Build.xml:ant配置文件,用以编译、发布、测试、清除EJB。在JBOSS实现的EJB3.0中,你不必写任何的EJB部署文件和jboss部署文件。JBOSS默认使用接口的全称作为它的JNDI名。在Eclipse的Ant视图中执行ru

  7. PHP开发大型项目的一点经验

    变量的命名尽量规范化,不要与PHP中的关键字相冲突。我比较喜欢PHPEDIT,也许是用惯了,现在感觉一离开PHPEDIT写PHP就没感觉,初学PHP的时候用NOTEPAD写,因为程序比较简单。用PHPEDIT工作效率会提高几倍,哪怕你从来没用过。可以说一个大型PHP项目就是由类组成的。

  8. Android开发AsmClassVisitorFactory使用详解

    这篇文章主要为大家介绍了Android开发AsmClassVisitorFactory使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  9. Java中四种XML解析技术

    在平时工作中,难免会遇到把XML作为数据存储格式。在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历XML这块来测试,因为遍历XML是工作中使用最多的。DOM是以层次结构组织的节点或信息片断的集合。对于需要自己编写代码来处理XML文档的开发人员来说,选择DOM还是SAX解析模型是一个非常重要的设计决策。DOM采用建立树形结构的方式访问XML文档,而SAX采用的事件模型。

  10. 基于文本的留言簿

    固然基数据库的留言簿可以作得很漂亮,而且也更好管理。但是对于那些没有数据库空间的朋友们来说,基于文本的留言簿也完成可以适用于个人站来使用。而且只要我们努力去做同样可以做得很好,甚至可以说丝毫不比基于数据库的留言簿差。在这里我向介绍一个基于文本的留言簿。反应留言表单的note.htm文件;最终处理留言信息的note.php文件。

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部