JAVA网站制作之在Eclipse中利用SWT举行界面计划
唉!都是钱闹的1.Swing和.net开发比较------从市场份额看.net开发主要占据大部分的中小型和中型的的桌面开发,原因是它封装了很多工具计划在Eclipse中利用SWT举行界面计划SWT是一个IBM开辟的跨平台GUI开辟工具包。至于为何IBM要费力本人重整旗鼓开辟一个GUI工具包,而不是利用Sun现有的由AWT,Swing,Java2D,Java3D等组成的JavaGUI框架,那就说来话长了。(记得在一个BBS上读过一个关于SWT劈头的奚弄类的帖子)。1.为何要利用SWT? SWT是一个IBM开辟的跨平台GUI开辟工具包。至于为何IBM要费力本人重整旗鼓开辟一个GUI工具包,而不是利用Sun现有的由AWT,Swing,Java2D,Java3D等组成的JavaGUI框架,那就说来话长了。(记得在一个BBS上读过一个关于SWT劈头的奚弄类的帖子)。 在SWT之前,Sun已供应了一个跨平台GUI开辟工具包AWT(AbstractWindowingToolkit).固然AWT框架也利用的是原生窗口部件(nativewidgets),可是它一向未能冲破LCD成绩。LCD成绩招致了一些次要平台特性的丢失。假如你不分明的话(实在我也没分明),换句话说,假如平台A有窗口部件(widgets)1-40,而平台B有窗口部件(widgets)20-25,那末跨平台的AWT框架只能供应这两个窗口部件集的交集。 为办理这个成绩,Sun又创立了一个新的框架。这个框架不再利用原生窗口部件,而是利用仿真窗口部件(emulatedwidgets)。这个办法固然办理了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实例。 :从分歧的角度看SWT使用程序 从分歧的角度展现了SWT使用程序。左边的图是一个简化的UI对象的承继图。两头的图展现了UI对象的容器布局(containmentstructure)。右边的图则是创立后的UI表面。 假如一个使用程序利用了多个线程,那末每一个线程都利用的是Display对象分派给它本人的实例。程序员可使用静态办法Display.getCurent()来失掉Display对象确当前举动的实例。Shell用于在特定的操纵体系中体现窗口。Shell能够最年夜化、最小化或一般化。Shell有两品种型。第1种是高层shell,它是Display的子窗口,同时它也是一个主窗口。第2类是对话shell,这类shell要依附于其他的shell窗口存在。shell窗口终极成为上述那品种型,要看在创立shell时传送给shell机关函数的是甚么作风位(stylebits)。一个shell的默许值是DialogShell。也就是说,假如不带参数,那默许就是一个对话shell。而假如给参数付与了一个Display对象,则该shell将是一个高层shell。 一些窗口部件的属性必需在创立它们的早期就要被设置。这些窗口部件的属性就是后面所说的作风位(stylebits)。在SWT的类中,作风位被界说为常数。比方,Buttonbutton=newButton(shell,)。可使用或(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->AddVariable->EclipseHome->Extend将swt.jar文件加到类路径中。 接着,你一定想编译这个SWT使用了。可是会呈现上面所示的运转非常。呈现这个非常的缘故原由是swt.jar库利用的是原生库。你必要设置java.library.path情况变量来利用Java中的原生库。 把持台(Console)的输入以下: java.lang.UnsatisfiedLinkError:noswt-win32-2136injava.library.path atjava.lang.ClassLoader.loadLibrary(UnknownSource) atjava.lang.Runtime.loadLibrary0(UnknownSource) atjava.lang.System.loadLibrary(UnknownSource) atorg.eclipse.swt.internal.Library.loadLibrary(Library.java:108) atorg.eclipse.swt.internal.win32.OS.(OS.java:46) atorg.eclipse.swt.widgets.Display.internal_new_GC(Display.java:1291) atorg.eclipse.swt.graphics.Device.init(Device.java:547) atorg.eclipse.swt.widgets.Display.init(Display.java:1316) atorg.eclipse.swt.graphics.Device.(Device.java:96) atorg.eclipse.swt.widgets.Display.(Display.java:291) atorg.eclipse.swt.widgets.Display.(Display.java:287) atcom.swtdesigner.trytry.main(trytry.java:24) Exceptioninthread"main" 按上面的步骤设置java.library.path变量:顺次翻开Run->Run...->JavaApplicaton->"Project"->Arguments->VMArguments。在"VMArguments"中输出 -Djava.library.path=c:eclipsepluginsorg.eclipse.swt.win32_2.1.0oswin32x86 注重要输出你本人的swt.jar地点的路径。 小技能:加载原生库: 假如你必要加载本人使用程序所利用的原生库,可使用Runtime.getPlatform.loadLibrary("libraryname")办法。在性能方面,在windows平台下,.net可能是占强项,要是把.net放在sun开发的操作系统上去运行呢?根本就运行不了,.net对其它操作系统的支持也很弱,性能也可能比不上java。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 是一种使网页(Web Page)产生生动活泼画面的语言 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 是一种为 Internet发展的计算机语言 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
页:
[1]
2