仓酷云

标题: JAVA教程之[Eclipse条记]SWT计划思绪 [打印本页]

作者: 小女巫    时间: 2015-1-18 11:47
标题: JAVA教程之[Eclipse条记]SWT计划思绪
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。条记|计划


本文部份内容和灵感来自eclipse.org网站,特此声明。更多内容,请参考:

http://eclipse.org/articles/Article-SWT-Design-1/SWT-Design-1.html



尽人皆知,SWT与Swing最年夜的分歧就是它间接利用操纵体系供应的现成的当地图形接口,因而具有当地化的Look&Feel。可是它是怎样做到这一点的呢,固然是经由过程JNI。我们来看一个例子,假定我们利用Win32的API。

我们如今有一个文本框text,经由过程以下的代码,我们给它一个字符串,并让它选择/highlight从3~5([3,5])的字符。
text.setText(“abcdefgh”);text.setSelection(3,6);
在Windows下,这个setSelection办法是怎样完成的呢?我们能够看看源码:


publicvoidsetSelection(intstart,intend){…OS.SendMessage(handle,OS.EM_SETSEL,start,end);OS.SendMessage(handle,OS.EM_SCROLLCARET,0,0);}
做过Windows编程的伴侣大概一会儿就认出了这个SendMessage,这不就是Win32API顶用于向窗体发送动静的函数吗?呵呵,没错,我们再来看一下这个SendMessage办法的原型:


publicstaticfinalintSendMessage(inthWnd,intMsg,intwParam,intlParam){if(IsUnicode)returnSendMessageW(hWnd,Msg,wParam,lParam);returnSendMessageA(hWnd,Msg,wParam,lParam);}publicstaticfinalnativeintSendMessageW(inthWnd,intMsg,intwParam,intlParam);publicstaticfinalnativeintSendMessageA(inthWnd,intMsg,intwParam,intlParam);
我们看到了两个版本,一个版本针对Unicode,另外一个版本针对ASCII,恰好Win32API也是云云,我们在这里看到的是native的办法,这意味着详细另有一组JNI的C代码来间接与操纵体系的函数打交道:


#ifndefNO_SendMessageW__IIIIJNIEXPORTjintJNICALLOS_NATIVE(SendMessageW__IIII)(JNIEnv*env,jclassthat,jintarg0,jintarg1,jintarg2,jintarg3){jintrc;OS_NATIVE_ENTER(env,that,SendMessageW__IIII_FUNC);rc=(jint)SendMessageW((HWND)arg0,arg1,(WPARAM)arg2,(LPARAM)arg3);OS_NATIVE_EXIT(env,that,SendMessageW__IIII_FUNC);returnrc;}#endif#ifndefNO_SendMessageA__IIIIJNIEXPORTjintJNICALLOS_NATIVE(SendMessageA__IIII)(JNIEnv*env,jclassthat,jintarg0,jintarg1,jintarg2,jintarg3){jintrc;OS_NATIVE_ENTER(env,that,SendMessageA__IIII_FUNC);rc=(jint)SendMessageA((HWND)arg0,arg1,(WPARAM)arg2,(LPARAM)arg3);OS_NATIVE_EXIT(env,that,SendMessageA__IIII_FUNC);returnrc;}#endif
看到这里,你大概已名顿开:SWT所做的不过就是把Win32的API复杂的包装了一下,我们在SWT这一层挪用的办法、传送的参数被一成不变的代办署理到了Win32层。这就是SWT的中心头脑。SWT有一个很主要的计划准绳,那就是,SWT的API一对一的封装OS的API,完整忠厚于操纵体系的API完成的举动,假如有bug,那也是OS的bug,它不会实验往“改正”操纵体系,由于那样会潜伏的损坏当地化的一些举动。忠厚于OS也使得挪用者不用但心本人的SWT程序会跟OS的当地GUI有纷歧致的中央,若有需要间接参考MSDN便可。SWT实在就是如许一个thinwrapper,我们经由过程它能够便利的会见Win32的图形API,为我们的使用程序供应native的Look&Feel。

上面给出一个完全的SWT示例:
packagesean.test.swt;importorg.eclipse.swt.SWT;importorg.eclipse.swt.layout.FillLayout;importorg.eclipse.swt.widgets.Display;importorg.eclipse.swt.widgets.Shell;importorg.eclipse.swt.widgets.Text;publicclassDummySWT{publicstaticvoidmain(String[]args){finalDisplaydisplay=newDisplay();finalShellshell=newShell(display);shell.setLayout(newFillLayout());finalTexttext=newText(shell,SWT.SINGLE);text.setText("abcdefgh");text.setSelection(3,6);shell.pack();shell.open();while(!shell.isDisposed()){if(!display.readAndDispatch()){display.sleep();}}display.dispose();}}
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。
作者: 小魔女    时间: 2015-1-21 15:14
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者: 金色的骷髅    时间: 2015-1-24 13:50
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 深爱那片海    时间: 2015-2-1 16:20
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 再现理想    时间: 2015-2-7 08:22
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 仓酷云    时间: 2015-2-11 01:14
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者: 乐观    时间: 2015-3-1 19:09
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 愤怒的大鸟    时间: 2015-3-10 22:09
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者: 飘灵儿    时间: 2015-3-17 07:24
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 第二个灵魂    时间: 2015-3-18 02:37
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者: 蒙在股里    时间: 2015-3-25 09:44
Java 编程语言的风格十分接近C、C++语言。
作者: 冷月葬花魂    时间: 2015-3-25 21:10
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 莫相离    时间: 2015-4-4 22:17
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者: 山那边是海    时间: 2015-4-6 19:12
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 小妖女    时间: 2015-4-12 15:23
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者: 精灵巫婆    时间: 2015-4-13 17:12
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 再见西城    时间: 2015-4-15 09:53
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 柔情似水    时间: 2015-4-18 12:40
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 老尸    时间: 2015-4-28 15:31
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者: 若天明    时间: 2015-5-1 02:53
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2