在Eclipse中用SWT设计界面-Java基础-Java-编程开发

eclipse下搭建SWT图形界面开发环境 什么是SWT 参考:http://www.cppblog.com/baby-fly/archive/2009/10/20/99008.html         用java的人一定都知道AWT和Swing,而SWT(Standard Widget Toolkit)则是由Eclipse项目组织开发的一套完整的图形界面开发包,虽然当初仅仅是IBM为了编写Eclipse的IDE环境才编写的一套 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

  1. 为什么要使用SWT?

  SWT是一个IBM开发的跨平台GUI开发工具包。至于为什么IBM要费劲自己另起炉灶开发一个GUI工具包,而不是使用Sun现有的由AWT, Swing, Java 2D, Java 3D等构成的Java GUI框架,那就说来话长了。(记得在一个BBS上读过一个关于SWT起源的调侃类的帖子)。

  在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit)。虽然AWT框架也使用的是原生窗口部件(native widgets),但是它一直未能突破LCD问题。LCD问题导致了一些主要平台特征的遗失。如果你不明白的话(其实我也没明白),换句话说,如果平台A有窗口部件(widgets)1–40,而平台B有窗口部件(widgets)20–25,那么跨平台的AWT框架只能提供这两个窗口部件集的交集。

  为解决这个问题,Sun又创建了一个新的框架。这个框架不再使用原生窗口部件,而是使用仿真窗口部件(emulated widgets)。这个方法虽然解决了LCD问题,并且提供了丰富的窗口部件集,但是它也带来了新的问题。例如,Swing应用程序的界面外观不再和原生应用程序的外观相似。 虽然在JVM中这些Swing应用程序已经得到了最大程度的性能改善,但是它们还是存在着其原生对应物所不具有的性能问题。并且,Swing应用程序消耗太多的内存,这样Swing不适于一些小设备,如PDA和移动电话等。

  IBM进行了尝试以彻底解决AWT和Swing框架带来的上述问题。最终,IBM创建了一个新的GUI库,这就是SWT。SWT框架通过JNI来访问原生窗口部件。如果在宿主(host)平台上无法找到一个窗口部件,SWT就会自动地模拟它。

  2. SWT应用程序的组成

  一个SWT应用程序的基本组成部分为显示界面(Display)、命令界面(Shell,使命令进入并使运行初始化)和窗口部件(Widgets)。Display负责管理事件循环和控制UI线程和其他线程之间的通讯。Shell是应用程序中被操作系统窗口管理器管理的窗口。每个SWT应用程序至少需要一个Display和大于等于1个的Shell实例。

图1:从不同的角度看SWT应用程序
  图1从不同的角度展示了SWT应用程序。左侧的图是一个简化的UI对象的继承图。中间的图展示了UI对象的容器结构(containment structure)。右侧的图则是创建后的UI外观。

  如果一个应用程序使用了多个线程,那么每个线程都使用的是Display对象分配给它自己的实例。程序员可以使用静态方法Display.getCurent()来得到Display对象的当前活动的实例。

  Shell用于在特定的操作系统中表现窗口。Shell可以最大化、最小化或正常化。Shell有两种类型。第1种是高层shell,它是Display的子窗口,同时它也是一个主窗口。第2类是对话shell,这种shell要依赖于其他的shell窗口存在。shell窗口最终成为上述那种类型,要看在创建shell时传递给shell构造函数的是什么风格位(style bits)。一个shell的默认值是DialogShell。也就是说,如果不带参数,那默认就是一个对话shell。而如果给参数赋予了一个Display对象,则该shell将是一个高层shell。

  一些窗口部件的属性必须在创建它们的初期就要被设置。这些窗口部件的属性就是前面所说的风格位(style bits)。在SWT的类中,风格位被定义为常数。例如,Button button = new Button( shell, 〈styleBits〉 )。可以使用或(OR)操作符“|”来设置多个风格位。例如,如果想设置一个带边界的压下按钮,需要传递SWT.PUSH | SWT.BORDER作为风格位参数。

  3. 进行SWT开发前的环境设置

  为了进行SWT应用开发,你需要把SWT库添加到类路径(classpath)上,并设置必要的环境变量。

  首先,你要在ECLIPSE_HOMEeclipsepluginsorg.eclipse.swt.win32_2.1.0wswin32目录下找到swt.jar库文件。注意这里的“org.eclipse.swt.win32_2.1.0”目录是和Eclipse的版本有关的。实在找不到你就用文件搜索功能吧。然后依次打开下面窗口Project-〉Properies-〉JavaBuildPath-〉Libraries-〉Add Variable -〉 Eclipse Home -〉Extend将swt.jar文件加到类路径中。

  接着,你肯定想编译这个SWT应用了。但是会出现下面所示的运行异常。出现这个异常的原因是swt.jar库使用的是原生库。你需要设置java.library.path环境变量来使用Java中的原生库。

  控制台(Console )的输出如下:

java.lang.UnsatisfiedLinkError: no swt-win32-2136 in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:108)
at org.eclipse.swt.internal.win32.OS.〈clinit〉(OS.java:46)
at org.eclipse.swt.widgets.Display.internal_new_GC(Display.java:1291)
at org.eclipse.swt.graphics.Device.init(Device.java:547)
at org.eclipse.swt.widgets.Display.init(Display.java:1316)
at org.eclipse.swt.graphics.Device.〈init〉(Device.java:96)
at org.eclipse.swt.widgets.Display.〈init〉(Display.java:291)
at org.eclipse.swt.widgets.Display.〈init〉(Display.java:287)
at com.swtdesigner.trytry.main(trytry.java:24)
Exception in thread "main"
  按下面的步骤设置java.library.path变量:依次打开
Run-〉 Run...-〉 Java Applicaton-〉 "Project" -〉Arguments -〉 VM Arguments
在“VM Arguments”中输入
-Djava.library.path=c:eclipsepluginsorg.eclipse.swt.win32_2.1.0oswin32†
  注意要输入你自己的swt.jar所在的路径。

  小技巧:加载原生库:

  如果你需要加载自己应用程序所使用的原生库,可以使用Runtime.getPlatform.loadLibrary("libraryname")方法。

  再编译一次你的应用程序,这次通过了吧。

Eclipse配置SWT软件开发环境 软件准备Eclipse Java开发环境:Eclipse IDE for Java Developershttp://www.eclipse.org/downloads/SWT软件包:swt-3.5.2-win32-win32-x86.ziphttp://www.eclipse.org/swt/JFace软件包:一般Eclipse的IDE文件plugins目录中会有相应的版本,如果下载Eclipse for RCP/Plug-in Developers版本则包括Jface的JAR以及源代码。SWTDesi 阅读详情

相关推荐

Eclipse + Java + WindowBuilder 可视化编程

Eclipse真是个好东西,你可以在上面编写各种各样的语言,但是一个致命的问题是界面设计。 当然你可以用代码手打界面,但是可惜我被VS和Xcode惯坏了,一定要用可视化编程环境,于是就要往Eclipse里装一些可视化的插件。 对于编写Java程序,我选择了WindowBuilder,一个可以开发SWT和Swing的GUI插件。 安装教程:http://blog.youkuaiyun.com/am

清澈 1万+

在Eclipse中使用SWT进行界面设计

作者:yipsilon 1. 为什么要使用SWT?   SWT是一个IBM开发的跨平台GUI开发工具包。至于为什么IBM要费劲自己另起炉灶开发一个GUI工具包,而不是使用Sun现有的由AWT, Swing, Java 2D, Java 3D等构成的Java GUI框架,那就说来话长了。(记得在一个BBS上读过一个关于SWT起源的调侃类的帖子)。     在SWT之前,Sun已经提供了一个跨平台

Javaor2004的专栏 1008

Eclipse下搭建SWT开发环境

0.序言        还是老风格,从头写些基本的东西,帮助自己,也帮助正处于困惑中的别人。今天介绍的是Eclipse下的SWT的配置过程。自己前两天要做个项目,配置了半天都不正确,后来慢慢总结了一下,不同环境配置的方法可能略有差别吧。1.什么是SWT        用java的人一定都知道AWT和Swing,而SWT(Standard Widget Toolkit)则是由Eclipse项目组

yousufu的专栏 2328

eclipse swt调节界面位置和设置界面大小等否拖拽等

weixin_44942769的博客 1051

Eclipse SWT与JFace图形界面编程精进

本文还有配套的精品资源,点击获取 简介:SWT和JFace是Eclipse平台中用于构建图形用户界面的重要组件。SWT提供了与操作系统交互的底层API,实现了高效的性能和原生界面外观,而JFace则建立在SWT之上,简化了GUI开发并引入了MVC设计模式。掌握这些工具将使开发者能够创建具有原生用户体验和复杂界面需求的应用程序,同时提高代码的可维护性和可扩展性。通过学习SWT...

weixin_42581846的博客 1724

Java SWT图形界面开发实战指南

Java SWT(Standard Widget Toolkit)是Eclipse基金会推出的一套本地化图形界面开发库,与传统的AWT和Swing不同,SWT通过直接调用操作系统原生控件(如Windows的Win32 API、Linux的GTK等),从而实现更接近操作系统的外观和更高的性能表现。SWT的基础控件是构建图形界面的最小单元,包括按钮(Button)、标签(Label)、文本框(Text)、下拉框(Combo)和列表框(List)等。它们虽然功能简单,但却是构建复杂界面的基础。

weixin_33375360的博客 1408

Eclipse的SWT窗口布局经验

用Eclipse做了几个小界面,总结了一些经验:1,在最开始的布局,通常都用默认的,等到最后再更改布局。2,在更改布局之前,最好很多属性不要更改。3,对于各个容器和控件的命名要在建立的第一时间完成。4,StackLayout 堆栈式的布局,一定要有一个主Composite 其余的Composite都放在这个主Composite作子集。5,比较常用的是 GridLayout,其次

longhr的专栏 1941

深入探索SWT插件在Java GUI开发中的应用

本文还有配套的精品资源,点击获取 简介:SWT(Standard Widget Toolkit)是Java编程环境中用于构建用户界面的开源库,由IBM为Eclipse项目开发。SWT插件通过直接调用操作系统API,实现与原生界面的紧密集成,提升了跨平台一致性及性能。本文深入探讨SWT插件及其在Java GUI开发中的应用,包括关键控件如按钮、文本框、列表、表格、树形视图和滚...

weixin_42575109的博客 1743

eclipse下SWT/JFace开发

1.加入的jar包:l         org.eclipse.swt_3.x.x.jarl         org.eclipse.jface_3.x.x.jarl         org.eclipse.core.runtime_3.x.x.jarl         org.eclipse.ui.workbench_3.x.x.jar加入org.eclipse.swt.wi

探索少儿编程真正价值! 1439

Java SWT 图形用户界面教程 PDF

Java SWT 图形用户界面教程 PDF Java SWT 图形用户界面教程 PDF

swtUI4:基于swt,jface特殊场景还会集成awt,swing等组件封装为一体化的java桌面应用程序框架,定制自己的界面美化特效,定制自己的升级策略,当内部集成jvm,还可以提供跨平台无jdk的运行程序,希望有兴趣的可以一起维护和扩展,扩展rcp,swt方向在国内市场的应用

swtUI4 基于swt,jface特殊场景还会集成awt,swing等组件封装为一体化的java桌面应用程序框架,定制自己的界面美化特效,定制自己的升级策略,当内部集成jvm,还可以提供跨平台无jdk的运行程序,希望有兴趣的可以一起维护和扩展,扩展rcp,swt方向在国内市场的应用。 启动主界面: com.ztesoft.ip.ui.MainApp 发布升级日志 v1.0 2015年6月18日 13:50:38 1.初始化项目 2.业务背景:切换到不同的网络环境设置繁琐的ip dns很麻烦,用跨平台swt来做,界面可以美化,支持用户自定义,目前只支持颜色

在Eclipse中用SWT设计界面

1. 为什么要使用SWT?   SWT是一个IBM开发的跨平台GUI开发工具包。至于为什么IBM要费劲自己另起炉灶开发一个GUI工具包,而不是使用Sun现有的由AWT, Swing, Java 2D, Java 3D等构成的Java GUI框架,那就说来话长了。(记得在一个BBS上读过一个关于SWT起源的调侃类的帖子)。   在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abs

popkiler的专栏 951

Eclipse SWT 4.4 API 文档

Eclipse SWT 4.4 API 文档,根据官方zip源码包编译而成

SWT界面开发Eclipse插件WindowBuilder

过去用于开发SWT界面开发的Eclipse插件名为SWT Designer,这个项目10年前已经停止维护,其界面设计能力也非常初级。此后Google公司以该插件作为基础,延续了一个新的项目名为WindowBuilder。作为SWT Designer的升级产品,WindowBuilder能够更好的支持Swing、SWT和JFace的界面设计,完全可见既可得,非常适用于初学者和小型的桌面软件开发。

时哲技术博客 5251

Eclipse开发经典教程:常用SWT组件.pdf

Eclipse开发经典教程:常用SWT组件.pdf

PMBus协议解析:基于I2C的电源管理实战与TMS320F28003x驱动开发

在嵌入式系统与服务器电源设计中,数字电源管理总线是实现高效、可靠电源监控与控制的关键技术。PMBus协议基于广泛应用的I2C总线物理层,通过定义标准化的命令集、数据格式与时序规范,为多路电源的电压电流监控、动态调整及故障处理提供了高效解决方案。其技术价值在于通过硬件自动处理协议解析、时钟拉伸与中断,显著降低软件复杂度,使开发者能聚焦于电源环路设计等核心逻辑。该协议广泛应用于服务器、通信基站及高性能计算板卡等场景,通过引入数据包错误检查、专用告警线等机制,确保了电源管理的可靠性。本文以TI TMS320F28

weixin_29189377的博客 374

使用Eclipse进行SWT编程

使用Eclipse进行SWT编程1. 为什么要使用SWT?SWT是IBM开发一套跨平台的GUI开发框架。为什么IBM要创建另一种GUI呢?为什么他们不使用现有的Java GUI框架呢?要回答这些问题,我需要回到Java的早期时代。Sun已经创建了一套跨平台的GUI框架 AWT (Abstract Windowing Toolkit)。 这个AWT框架使用了本地窗口组件(native

一个人的精彩 9114

主板USB接口全部失效解决方案(通用串行总线USB控制器有黄色叹号)保姆级教程亲测有效

通用串行总线控制器总是有叹号解决办法 办公室的崩腾时代老电脑,疫情期间没人用,来了开机之后发现鼠标键盘都用不了,本以为是主机放时间长出了问题,后来想起来就百度了“鼠标键盘都失效”的标题,结果发现了“串行总线控制器总是感叹号”的关联问题。正好办公室电脑都装有teamviwer常用来远程办公(在家偷懒)。所以通过远程发现电脑室可以运行的。并在控制面板发现:通用串行总线控制器总是感叹号,插入外设时USB无反应。如图:​ 并且右键选中其中一个,点击最后一个选项:“属性” 可以发现“设备状态”中会提示“由...

xiao_bai_0_0的博客 2万+

[转载] 在Eclipse中使用SWT进行界面设计

1. 为什么要使用SWT?      SWT是一个IBM开发的跨平台GUI开发工具包。至于为什么IBM要费劲自己另起炉灶开发一个GUI工具包,而不是使用Sun现有的由AWT, Swing, Java 2D, Java 3D等构成的Java GUI框架,那就说来话长了。(记得在一个BBS上读过一个关于SWT起源的调侃类的帖子)。      在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AW

掌门日记 2109

从MIPS汇编到C语言:手把手教你用Mars模拟器理解指令集(附实战代码)

本文详细介绍了如何使用Mars模拟器从MIPS汇编过渡到C语言编程,通过实战代码解析ADD、LW、BEQ等指令集与C语言结构的对应关系。内容涵盖环境搭建、算术运算、内存访问、条件分支及函数调用等核心概念,帮助读者深入理解MIPS指令分类和计算机底层运行机制。

weixin_26821003的博客 357

SAP-ABAP:SAP中的用户确认对话框:深入理解与实践POPUP_TO_CONFIRM

本文深入介绍了SAP中的用户确认对话框函数POPUP_TO_CONFIRM,包括其核心参数配置、返回值处理、应用场景和最佳实践。该函数是SAP二次开发中重要的交互工具,用于关键操作前获取用户确认,防止误操作。文章详细解析了参数设置技巧,强调必须全面处理所有可能的返回值,并提供了删除数据、批量操作等典型应用场景的代码示例。同时对比了其他类似弹出函数,帮助开发者选择合适工具。正确使用该函数可提升系统安全性、改善用户体验并符合SAP设计规范。

baidu_35680696的博客 970
上一篇: Java中对HashMap的深度分析与比较-Java基础-Java-编程开发
下一篇: 编写一个JAVA的队列类-Java基础-Java-编程开发
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值