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

使用 SWT 写图形化界面的例子(eclipse) SWT 无疑是迄今写图形化界面最好的工具了,这个是在eclipse工具下写的SWT例子,希望和大家一起进步,项目中如果要使用SWT的可以学习一下 :> 立即下载
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实例。
Click to view in original size 477 x 192

图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_HOME/eclipse/plugins/org.eclipse.swt.win32_2.1.0/ws/win32目录下找到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:/eclipse/plugins/org.eclipse.swt.win32_2.1.0/os/win32/x86
注意要输入你自己的swt.jar所在的路径。

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


     再编译一次你的应用程序,这次通过了吧。
H3C防火墙旁路部署实战:网关迁移到防火墙后,如何配置DHCP和VLAN间隔离策略? 本文详细介绍了H3C防火墙旁路部署实战,重点讲解网关迁移到防火墙后的DHCP配置和VLAN间隔离策略。通过实际案例和配置示例,帮助网络工程师解决传统核心交换机架构的性能瓶颈和安全管控问题,实现精细化访问控制。 阅读详情

相关推荐

Creo报许可证错误License request failed for feature的解决方案

有些朋友用了一段时间打开creo软件,出现icense request failed for feature”错误,这个是Creo许可证出现了问题,一般是许可证文件无效或是已过期,导致Creo软件通信出现故障,就会出现Creo License request failed for feature, Requsesting CreoPMA_SSQ ,Run ptcstatus.bat server status。第三步:键盘按win+R,在运行窗口里输入:cmd,然后点确定。第八步:点击系统,找到系统信息。

Q82556499的博客 3万+

用Eclipse进行可视化Java界面设计

http://dev.youkuaiyun.com/develop/article/24/24815.shtm

往事如风 1937

OpenRA引擎实战:如何从零开始搭建一个经典RTS游戏模组(附资源包)

本文详细介绍了如何利用开源游戏引擎OpenRA从零开始搭建经典RTS游戏模组。内容涵盖开发环境配置、资源管线处理、YAML规则定义、地图编辑与Lua脚本编写等全流程实战指南,并提供了资源包,帮助开发者和爱好者快速创建属于自己的即时战略游戏世界。

silver的专栏 904

java常用控件_Swt常用控件中文教程(转)

(样图没有贴上,不好意思)1、Eclipse中swt的配置建议配置:jdk1.4.2以及eclipse3.1在代码中调用swt控件之前,首先建立一个项目,然后选择该项目的properties -> Java Build Path,将standard Widget ToolKit加入到Library页当中。如下图所示:接下来可以建立第一个eclipse小程序,新建一个class,并且在该cla...

weixin_42106357的博客 1447

ubuntu 20.04系统离线安装nfs

ubuntu环境下,离线安装nfs

m0_62464865的博客 2241

动态刷新曲线_【GhPython应用】利用反射刷新Image sampler组件

【版权声明】| 作者:月之眼|案例图片来源:Sergiu Radu Pop的facebook| 如有侵权,请联系大水牛平台|如果觉得文章不错,欢迎分享效果展示利用python刷新Image sampler组件,主要的思路就是X输入端:输入要切换的图片路径,我的案例中输入了9张图片。然后通过100毫秒切换一张图片显示,来达到动态显示效果。代码分析run输入端类型:bool (I...

weixin_42393829的博客 531

Eclipse下搭建SWT与Swing图形界面开发环境

Eclipse SWT Swing 图形界面开发

深之JohnChen的专栏 1万+

CarSim - 仿真汽车驾驶行为的完整源代码及描述

以上是多年收集的稀有软件CarSim的源代码和描述,借助CarSim提供的功能,用户可以准确地模拟和研究汽车的驾驶行为,为汽车设计、驾驶辅助系统等领域提供有价值的支持。是一款用于模拟汽车驾驶行为的稀有软件,它经过多年的收集和开发,提供了一套完整的源代码和相应的描述,能够准确地模拟真实世界中的汽车运动和操控。CarSim的源代码采用现代化的。

weixin_50547796的博客 293

java 界面 swt_Java界面 SWT 开发基础——Display and Shell

Display 基本概述与Shell 类的基本结构本次实验主要包含创建一个空白的 Display,并在其中建立 Shell 的父类,Shell 中设置按钮,通过按钮创造子窗口。此外在父窗口设置中加入了图标设置。代码来自《EclipseSWT/JFace 核心应用》清华大学出版社import org.eclipse.swt.SWT;import org.eclipse.swt.events.Sele...

weixin_39653622的博客 574

多agv系统调度的MATLAB仿真

从起点出发,到货物点领取货物最后到卸货点,以完成任务总时间最短为目标进行单目标优化,约束条件为,任务不冲突,路径不冲突,要能实现路径规避 ,4-6台agv一起工作。左右货架间隔可通过1个agv,上下货架间隔可通过两个agv,通道为双向行驶通道。一台agv只能带一个货物,优化目标为完成任务总的时间最短,agv的速度是匀速,转弯也不会减速,取货物时间为固定值。上面的图里面货物看为正方形跟agv一样的长度大小,agv试做是跟货物一样大小的正方形agv的速度是每秒1个车身。多台agv一起完成...

FPGA/MATLAB学习教程/源码/项目合作开发 7564

【车载以太网】【AVB/TSN】IEEE802.1Qav队列及转发协议

目录 一、概述 二、优先级排队算法 三、基于信用的流量整形算法 一、概述 IEEE 802.1Qav 队列及转发协议(Qav)针对不同数据流选择不同的传输选择算法来保障对时间敏感的 AV 数据流的实时传输。为了避免传统的异步以太网数据流量与 AVB 流量之间对网络资源的竞争,AVB 交换机内使用优先级排队算法和基于信用的流量整形算法实现数据流的调度。 二、优先级排队算法 优先级排队算法主要用于传统以太网数据流(BE, Best Effort)的调度传输,BE 流通过基于优先级...

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 4687

java awt原理_Java中AWT、Swing与SWT三大GUI技术的原理与效率差别

看了一下对Java GUI讨论的帖子,因此写了一篇文章来阐述一下各类GUI技术的优劣。Java世界中,目前最知名的三大GUI库分别是:一、AWT(Abstract Window Toolkit)抽象窗口工具包库,包含于全部的Java SDK中二、Swing高级图形库,包含于Java2 SDK中三、来自IBM Eclipse开源项目的SWT(Standard Widget Toolkit)标准窗口部...

weixin_39648824的博客 707

深度解析电力负荷预测:基于深度学习的完整实战指南

电力负荷预测是智能电网运行中的核心技术之一,准确的负荷预测对于电网的稳定运行、电力市场交易以及能源调度具有重要意义。本文将详细介绍电力负荷预测的完整解决方案,从数据预处理、特征工程到模型构建与评估,提供完整的可执行代码。我们将使用LSTM(长短期记忆网络)和Transformer两种主流深度学习模型进行实现,并通过实际数据集验证模型效果。电力负荷预测是指根据历史负荷数据、气象因素、时间特征等多维信息,预测未来某一时段的电力需求。超短期负荷预测:未来几分钟到几小时短期负荷预测:未来1天到1周中期负荷预测。

YOLO 111

在Eclipse中安装SWT插件

<br />在Eclipse中安装SWT插件 收藏 <br />本文摘自:http://blog.163.com/oyhj_nicholas/blog/static/323592520086278232330/<br />在Eclipse中安装SWT插件<br />SWT插件用于Java 图形用户界面开发的,在www.swt-designer.com中下载与Eclipse版本相关的压缩包。<br />   本人使用的是Eclipse3.4,下载的SWT包是Designer_v6.7.0_for_Eclips

quanleilei123的专栏 4012

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Eclipse下SWT的安装与使用

Swt简介: SWT(Standard Widget Toolkit) Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。 在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit).AWT框架底层使用原生窗口部件(native...

CoderYYN 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

使用eclipse新建一个SWT工程

照着eclipse的引导教程,新建一个swt的hello world程序。 我是一步一步跟着做的,但是编译通过却运行报错。 在网上找到了相似的情况,解决了,于是贴在这里。 问题: n a WinDoze 7 Pro 32-bit machine, if I follow the instructions for creating a Hello World SWT example...

dhuo9786的博客 606

下载Eclipse的SWT插件

1. 进入 http://www.eclipse.org/swt/ 下载 进入页面后 有一个小段的标题为Releases 可以通过点击下面的相关超链接 找到相关文件 进行下载 部分S

w36680130的博客 2051

eclipse 搭建Swt 环境

我本是想用java开发一个记事本,开发记事本使用到SWT插件,我从网上找了许多的资料去集成插件,创建我的第一个SWT项目,以下是我搭建SWT环境的过程。 一、查看当前使用的exlipse 版本型号 在exlpse 选项栏找到Help --> about Eclipse 选项即可看到当前exlipse 的版本型号。如图: 二、到官网上去下载相匹配的SWT插件,或者直接在...

weixin_30378311的博客 547

[转载]SWT 和 JFace,第 3 部分: 简介

SWT 和 JFace,第 3 部分: 简介SWT 和 JFace 系列的第 3 部分扩展了我们所学的关于使用 Java™ 技术、Eclipse 以及 SWT 和 JFace 库创建应用程序的知识。这一期将向您展示如何使用表树...

congji3817的博客 224

[转载]Eclipse中用SWT和JFace开发入门(二)

Eclipse中用SWT和JFace开发入门(二)复合控件  至此,我们已经讨论了一些单独的控件。在多数 GUI 中,许多控件被组合在一起以提供丰富的用户体验。在 SWT 中,这种组合是通过 Composite 类实现的。   ...

congji3817的博客 236

[转载]SWT 和 JFace,第 1 部分: 简介

SWT 和 JFace,第 1 部分: 简介在这篇 SWT 和 JFace 系列的第一篇文章中,可以了解如何使用 Java™、Eclipse 以及 SWT 和 JFace 库创建简单的 SWT 应用程序。 还可以了解如何使用基本...

congji3817的博客 225

Eclipse下安装SWT的插件

SWT为Eclipse IDE(集成开发环境)编写的底层图形界面API。 转载:https://www.cnblogs.com/xinyan123/p/6225194.html 我本是想用java开发一个记事本,开发记事本使用到SWT插件,我从网上找了许多的资料去集成插件,创建我的第一个SWT项目,以下是我搭建SWT环境的过程。 一、查看当前使用的exlipse 版本型号 在exl...

Grace_1203的博客 2885

[转载]Eclipse中用SWT和JFace开发入门(一)

Eclipse中用SWT和JFace开发入门(一)可以使用标准窗口小部件工具箱(Standard Widget Toolkit,SWT)和 JFace 库来开发用于 Eclipse 环境的图形用户界面,而且还可以将它们用于开发...

congji3817的博客 1017

[转载]SWT 和 JFace,第 4 部分: 简介

SWT 和 JFace,第 4 部分: 简介“SWT 和 JFace” 系列的第 4 部分对于前几部分中使用 Java™ 技术、Eclipse 以及 SWT 和 JFace 库创建应用程序的知识进行扩展。这篇文章介绍了 To...

congji3817的博客 278

Eclipse插件开发之基础篇(6) SWT简介

转载出处:http://www.cnblogs.com/liuzhuo  SWT(Standard Widget Toolkit)是为Eclipse平台开发的GUI工具包。SWT构建了Eclipse的UI,但SWT并不依赖Eclipse,也可以被单独使用。  1. SWT的特征   现在的Eclipse中绝大部分的UI都由SWT的组件构成。   SWT最大的特征就是不实...

ahhwg42260的专栏 154

Eclipse与Netbeans,SWT与Swing

前一阵子要用java做一个带有界面的上机作业,真的敲起代码来,才发现Swing真的是很麻烦,就一个简单的界面,用代码来实现也是非常繁琐。         至于Swing的布局管理器,我觉得除了GridBagLayout还有一点实用性之外,其他的像是BoxLayout,GridLayout之类的还真没什么用,用之作出来的界面非常死板难看。         后来下了WindowBuilder,一个

2886
上一篇: [转载] 标准窗口小部件工具箱的 Java 二维作图
下一篇: 发现SWT-Designer的一个秘密
yipsilon
博客等级 码龄25年 3粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值