仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1022|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA教程之[Eclipse条记]SWT计划思绪

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:47:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 03:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表