Eclipse + Tomcat + Lomboz 配置
这几天想做这个 (eclipse3.0.1+tomcat5.0.16+tomcatPluginV31+emf-sdo-runtime-2.0.1+org.objectweb.lomboz_3.0.1.N20050106),按照网上其他兄弟发的文章配置了一下,发现其中不少问题,按照他们写得文章总是配置不成功,最后发现了原因,文章里要求“注意”的地方就是出错的地方,所以写这篇文章修正一下
一、软件下载:
注意:(一共5个,一个都不能少,很多网友发表的相同文章里只写了需要下载安装tomcat的软件,而没有写还需要下载eclipse里的tomcat插件,导致很多网友安装后eclipse里不能正常显示tomcat)。
1、java
这里使用的是jdk1.4.2。
下载地址: http://dlc.sun.com/jdk/j2sdk-1_4_2_07-windows-i586-p.exe;
2、tomcat
这里的tomcat的版本是5.0的,安装版或是解压版都是可以的。
下载地址: http://apache.linuxforum.net/dist/jakarta/tomcat-5/v5.0.28/bin/jakarta-tomcat-5.0.28.exe
3、tomcat插件
tomcatPluginV3.zip(下载之前需要查看插件是否适合eclipse的版本)
下载地址: http://www.sysdeo.com/eclipse/tomcatPluginV3.zip http://www.eclipsetotale.com/tomcatPlugin.html
4、eclipse
开发IDE eclipse-SDK-3.0.1-win32.zip
下载地址: http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/R-3.0.1-200409161125/download.php?dropFile=eclipse-SDK-3.0.1-win32.zip
语言包 NLpack-eclipse-SDK-3.0.x-win32.zip
下载地址: http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/L-3.0.1_Translations-200409161125/NLpack-eclipse-SDK-3.0.x-win32.zip
5、lomboz插件
lomboz插件需要下载两个部分,一个是emf环境,另一个是lomboz插件
下载地址: http://eclipse.mirrors.tds.net/tools/emf/downloads/drops/2.0.1/R200409171617/emf-sdo-runtime-2.0.1.zip
下载地址: http://download.forge.objectweb.org/lomboz/org.objectweb.lomboz_3.0.1.N20050106.zip
二、软件安装:
1、java安装
运行可执行文件j2sdk-1_4_2_07-windows-i586-p.exe,安装结束后需配置环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量
CLASSPATH: %JAVA_HOME%\lib;%TOMCAT_HOME%\common\lib
JAVA_HOME: c:\j2sdk1.4.2
PATH: %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;%JAVA_HOME%\bin;%TOMCAT_HOME%\bin
2、tomcat安装
解压版的直接解压就可以了,然后配置环境变量
TOMCAT_HOME = C:\Program Files\Apache Software Foundation\Tomcat 5.0,安装版的要注意的两点,一个是安装完之后tomcat的服务就能够启动的了,但是还是要配置TOMCAT_HOME;第二个就是需要查看一下安装程序是不是把tomcat服务注册成为windows的启动服务,需要到“服务”里查看,如果有这个选项就把它设置为手动启动,并且先停止这个服务。
[测试]:使用startup.bat命令,服务正常启动之后,ie浏览器里输入:http://localhost:8080/ 如果出现正常的小猫页面,那就应该没有问题了。
3、eclipse安装
eclipse的安装很简单,只要解压,然后把eclipse目录复制到盘符下就可以了,启动的时候,系统会自动寻找jvm,当然可以再以后配置,但是好像是必须先安装jdk。我这里是放在D:\eclipse下
4、tomcat插件安装,emf插件安装,lomboz插件安装,
tomcatPluginV3.zip解压后将文件夹com.sysdeo.eclipse.tomcat_3.0.0拷贝到D:\eclipse\plugins
emf插件和lomboz插件解压后将feature和plugins目录拷贝到 D:\eclipse\ 即可
5、启动Eclipse,选中windows->preferences,在弹出的窗口看不到Lomboz的情况时,先退出Eclipse,然后把Eclipse目录configuration中下面的org.eclipse.update文件夹删掉,再重新启动Eclipse就可以了。
三、eclipse配置
1、Java 配置
在Eclipse中点击windows->preferences,如果这几个插件安装成功,左边的列表里应该有lomboz和tomcat的选项。如果没有,检查上面的步骤是不是正确。在出现的窗口中选择java->Installed JRES,这时可以在右边的窗口中看到己经有一项目,名字为j2re1.4.2_04。我们再在这里点击右面的"Add"按钮,增加一个JRE,在出现的对话框中输入:
JRE Type: Standard VM
JRE name: 可以随意输入一个名字
JRE home directory:这里选择你的JDK的安装目录,好比你的JDK装在F:\J2SDK\,那么这里就是选择F:\J2SDK\这个目录。 其它的可以都不管,点击OK就新增了一个JRE了。
Build Path:修改完了之后回到preferences对话框中的Java->Build Path这一项,点击Build Path后,在右面的面板中我们选择Source and output folder下面的Folders这一项,而两个Source folder name和Output folder name的值我们不修改,保存为系统默认值,但是下面的As JRE library use:我们要选择为JRE_LIB variable这一项,不能为默认值JRE container,最后点击下面的Apply按钮。这一步千万不要忘记了,不然刚才的都是白做了。
2、设置Lomboz
在Preferences窗口中选定Lomboz,然后把右边面板中的JDK Tools.jar选择为你安装好JDK后,在JAVA_HOME\LIB\目录下面的tools.jar文件就可以了,一定不要搞错了,如果你的JDK是安装在F:\J2SDK\下面,那么这里的值就应该是F:\J2SDK\lib\tools.jar,是其它的都不对。其它的保持为默认值。
接着把Lomboz这一项展开,关键要设置的地方是Server Definitions这一项,另外两项Code Generation和JSP Editor可以不管。展开Lomboz的Server Definitions后,在Server types里选择Apache Tomcat v4.1.0(这是按照我的机器上的配置进行设置的,如果你安装的是其它版本的TOMCAT,你就要选择对应的选项),主要设置如下:
Properties
Application Server Directory:这是我的TOMCAT 4.1.30的安装目录,我装在F:\tomcat下面,所以它的值就是F:/tomcat
Address:127.0.0.1
Port:80(因为我在TOMCAT中把8080改为80了,所以这里就是80了,以你的TOMCAT的监听端口为准)
Classpath Variable Name: TOMCAT_HOME(可以修改成其它的字符串)
Classpath Variable: F:/tomcat(TOMCAT的安装目录) 然后点击Apply按钮。
Server Classpath:
JDK_TOOLS
${classPathVariableName}/bin/bootstrap.jar
${classPathVariableName}/common/servlet.jar
${classPathVariableName}/common/jasper-runtime.jar
${classPathVariableName}/common/jsp-api.jar 然后点击Apply按钮。
Client Classpath:
这里为空,什么也没有。
Project Classpath:
JDK_TOOLS
${classPathVariableName}/bin/bootstrap.jar
${classPathVariableName}/common/servlet.jar
${classPathVariableName}/common/jasper-runtime.jar
${classPathVariableName}/common/jsp-api.jar 然后点击Apply按钮。
这里的 Server Classpath:和Project Classpath:我设置的是一样的。
注意:(以上配置 Server Classpath与 Project Classpath时,可能因为tomcat版本的不同而*.jar的文件位置也不同,如果时tomcat5.x版的 ,则${classPathVariableName}/common/servlet.jar 与 ${classPathVariableName}/common/jasper-runtime.jar 应为${classPathVariableName}/common/lib/servlet-api.jar 与 ${classPathVariableName}/common/lib/jasper-runtime.jar ,比4.x版的多了一层lib目录。)
2、lomboz配置(2)
基本上不用什么配置,如果左边有那个lomboz选项,基本上就是成功了。点击lomboz,然后选择刚才配置的jdk里的tools.jar,这样配置就完成了。测试的方法是新建一个jsp文件,看看打开的时候是不是对script代码有特殊显示,并且建个测试类,看看jsp是不是能够自动引用类里的函数。
3、修改文件
把Eclipse_home\plugins\com.objectlearn.jdt.j2ee_3.0.1\servers 下面对应的server文件打开,比如我安装的TOMCAT是4.1.30版的,那么就把tomcat410.server这个文件打开,把里面的
-Djava.endorsed.dirs="${serverRootDirectory}/bin;${serverRootDirectory}/common/endorsed"
改成
-Djava.endorsed.dirs="${serverRootDirectory}/common/endorsed"
一共有两处,都要修改,修改完之后保存,退出,重新启动Eclipse,这一步很重要,一定要做,不然的话你在Lomboz中启动TOMCAT的时候会再现很多莫明其妙的异常的
注意:如果用的是tomcat5.x版的可能没有以上东西要改。
4、tomcat配置
这里是配置tomcat的参数,根据你安装的tomcat的版本,选择tomcat version,然户找到该tomcat的主目录,输入在tomcat home,下面的参数会自动配置,点击apply。 然后在左边选择advanced,同样把tomcat的主目录复制在tomcat base,点击apply。最后在左边选择jvm setting,选择刚刚加入的jre,点击apply,点击ok。这样就可以了。回到界面,点击工具栏上的黄色小猫的图标,如果配置正确,在console里应该有启动tomcat的信息。如果有,就代表tomcat配置成功了。
5、调出Lomboz各个菜单
启动Eclipse,然后点击windows->Customize Perspective,在出现的对话框中的Shortcuts页面中首先选中左边面板中的Lomboz J2EE Wizards,这时右边的面板中会出现很多选项的,同时也把它们各项前面的对钩打上。
然后在这个Shortcuts面板中改变Submenus:的值,选择Show View,接着在出现的面板的左边里选中Lomboz J2EE,同时也要把它前面的方框中打上对钩。
最后是更换Customize Perspective对话框中的面板到Commands这一页:
在Commands这一页中选定Lomboz Actions同时也把它们各项前面的对钩打上。
所有的设置完毕。
这样一切做完之后,Eclipse和Lomboz的环境就配置好了,你可以进行开发各种程序了。
个人体会:
可能在第5步中有些机器上可以不做,因为有不同的TOMCAT版本,不过我机器一定要改了才行,不然的话是不能正常启动TOMCAT的。我个人使用TOMCAT4.1.30版的,是因为我觉得这个版本的比较小,运行起来也比较快,比5.0以上版本的要快多了,而且也要相对稳定一些(个人看法,不代表其它人的),还有就是对于Eclipse 3.0的,可以参照上面的说明进行配置,基本上也可以行得通的,没有什么比较大的问题。
补充说明:
大家使用link方式对各种插件进行统一的组织管理,网上有很多对这种方法的讲解,希望能明白它的工作方式以举一反三以后不同的插件也就能轻易安装而不再需要上网查了。与将插件压缩包直接解压到eclipse的plugins下类似,ec在启动时都会寻找并装载eclipse\plugins目录下的插件。若将插件单独管理(即所谓的link方式),则在磁盘上任意位置解压一个插件包后应保证eclipse\plugins目录,有些插件解压后需要我们自己创建eclipse目录。之后在ec下的links文件夹(可能需要自己新建)下创建指向某一插件位置的link文件(如tomcat.link),其中编辑path=<插件目录中的eclipse的父目录>,注意分隔符应为“\\"或“/”。之后应先删除eclipse\configuration下的org.eclipse.update文件后再启动eclipse以便对工作区间进行更新。之后在窗口\首选项中进行一些必要的参数设定。以上是安装所有插件的通用方法。
在安装第二个插件Lomboz之前想过myEclipse,听说是个优秀功能强大的东东,但由于myec是要money的而且俺学校的网速可受不了这玩意儿100多M的天文数字,而且郁闷的是官方网下软件还需要先注册帐号。所以还是决定用lomboz(只是听说这个的配置麻烦的多),我在www.javaresearch.org(推荐给大家,这个java论坛有很丰富的资源)下载了lomboz3.01版6.33M,我也差不多被它忽悠得差不多了。看着网上教程的时候就感觉不对,我这lomboz比教程所描述的少了一个features目录,结果一切都乱套,直到今天才发现官方网(http://forge.objectweb.org/project/showfiles.php?group_id=97)下载的是6.93M,内容当然就是完整的了。而且在此之前竟不知道在装lomboz前还需先装好另一插件emf(地址http://download.eclipse.org/tools/emf/scripts/downloads.php#goto2.1.0I)。按以上方法安装了插件后都需要删除eclipse\configuration下的org.eclipse.update后再启动eclipse进行设置。
Eclipse 3 + Lomboz 3 + Tomcat 5 开发网站
看到别人写的关于EJB的文章,学着写写自己的设计环境。
那篇文章在这里:使用Eclipse3.0+lomboz3.0+jboss3.2.3开发EJB By 姜进成
因为不需要EJB,我的环境就没有这么高级了,用简单的Tomcat 5了事。
必需的软件:
JDK 1.4
Eclipse 3
Lomboz 3
Tomcat 5
下载这些软件并安装它们,其实只有JDK是安装的,其他都只要解压缩就可以了。我的目录结构如下:
h:\soft 主目录
h:\soft\j2se JDK目录,完整安装后,系统环境里应有指向 h:\soft\j2se\bin的路径设置
h:\soft\eclipse Eclipse 目录,解压缩形成的
h:\soft\tomcat5 Tomcat 5 目录,解压缩形成的
关于安装Lomboz,其实只要解压缩到对应的Eclipse目录中就可以,要注意它有两个包,要把他们都装了。Lomboz困难的是设置:
任何一步设置完成后,都要按Apply按钮,在设置对话框的右下角!!!
依次打开菜单 Windows - Preferences,在设置对话框的左边找到Lomboz(如果没有找到,说明Lomboz没有安装正确,要重新检查Lomboz的安装),右边的设置项只有一个要修改:JDK tools.jar,我的设置是:H:\soft\j2se\lib\tools.jar,改好后记得按Apply按钮!
打开左边的Lomboz设置选项,找到 Server definitions。在右边的 Server types 里选择 Apache Tomcat v5.0.x。这里有两个地方要设置:Application Server Dictionary 和 Classpath Variable,我的设置都是 Tomcat 目录,H:/soft/tomcat5。其他的不用改,改好后记得按Apply按钮!
注意 Tomcat 5 的最后一个面板,Project Classpath,你要在里面加一个Library,按 Add library 按钮,在 Tomcat 的目录中找到 common/lib/jsper-runtime.jar,把他加到列表里。嘿嘿,这个设置连 Lomboz自己的介绍也没有,但是在我机器里没有这个设置就不能单步 Debug JSP 文件。最后,改好后记得按Apply按钮!
还有就是编译目录的问题了,设置对话框中左边找到,Java - New Project,在右边的 Source and output folder 里,选 Folders。改好后记得按Apply按钮!
Eclipse, Lomboz and Tomcat 的 Web Project 设置
前一片已经讲过 Eclispe, Lomoz 和 Tomcat 的安装问题了(那篇文章在这里:Eclipse 3 + Lomboz 3 + Tomcat 5 开发网站),现在我们开始一个 Web project,也是设置问题。设置不对,没法调试,就像用记事本写程序,所以这一步也很关键。
开始以前,要注意 Lomboz 里提到的,在新文件和菜单里选上 Lomboz(具体的操作见 Lomboz 地说明),不然你就找不到 New Lomboz J2EE Project 来开始一个 Web Project 了。
在 New 列表里选择 New Lomboz J2EE Project,出现的对话框里添上你的 Project 名,关于地址,我一般不用默认的,这样程序不会和 Eclipse 混在一起。
第二步什么都不用改,直接到第三步 Create J2EE Module,按 Add?按钮,把你的 Web Module 名家进去,这其实就是将来的目录名。
加了以后上面的提示会告诉你必须设置一个服务器,转到 Targeted Server 面板,选中 Apache Tomcat 5.X,按 Add 按钮把他加到列表里。再按 Finish 按钮。
这步是关键!!!不然你调试不了。
右键单击刚刚建好的 Project,在弹出的菜单里选 Properties(最后一项),在设置对话框左边的列表里选 Java build path,右边有三个地方要改:
首先选中 Allow output folders for sourcre folders(挑上他)。
改 Default output folder 为刚才建的 Project 下的 WEB-INF/classes。大家应该知道这是 Tomcat 默认放 Class 的地方。
展开 j2src 目录,选中 Output folder,按右边的 Edit 按钮。把 Output folder 改成它自己。
经过这样的设置,你就可以调试你的 Bean 和 JSP 文件。连 Visual Studio .NET 都不能单步跟踪 ASPX 的运行,我们却可以单步调试 JSP。很有意思的开发环境。
接下来就是JSP调试了:Eclipse, Lomboz and Tomcat 的 JSP 调试。
我的新家 www.duoyichen.cn 喜欢我的博客的朋友请看
喜欢我的博客的朋友,请继续关注我的网站:http://www.duoyichen.cn
这里由于服务器问题,好久都没有更新了!
谢谢你们的关注,我一直在努力!
| 多艺工作室 http://www.duoyichen.cn QQ:276820370 网赚交流群:6807853 备用域名:http://duoyi.9126.com http://duoyi.icpcn.com |
《西游记》里几首插曲
女儿情
鸳鸯双栖蝶双飞,
满园春色惹人醉。
悄悄问圣僧,
女儿美不美,女儿美不美?
说什么王权富贵,
怕什么戒律清规。
只愿天长地久,
与我意中人儿紧相随。
爱恋伊,爱恋伊,
愿今生常相随。
相见难别亦难
相见难,别亦难,怎诉这胸中语万千。
我柔情万种,他去志更坚,只怨今生无缘。
道不尽声声珍重,默默地祝福平安。
人间事常难遂人愿,且看明月又有几回圆。
远去矣,远去矣,从今后魂萦梦牵。
道不尽声声珍重,默默地祝福平安。
人间事常难遂人愿,且看明月又有几回圆。
远去矣,远去矣,从今后魂萦梦牵。
何必西天万里遥
桃李芳菲梨花笑
怎比我枝头春意闹
芍药婀娜李花俏
怎比我雨润红姿娇
雨润红姿娇
香茶一盏迎君到
星儿摇摇,云儿飘飘
何必西天万里遥
欢乐就在今朝
欢乐就在今宵
天竺少女
噢……沙里瓦,噢……沙里瓦,
噢……嗬!……噢…嗬!…噢…嗬!…
是谁送你来到我身边
是那圆圆的明月明月
是那潺潺的山泉是那潺潺的山泉
是那潺潺的山泉山泉
我像那戴着露珠的花瓣花瓣
甜甜地把你把你依恋依恋
噢……沙噢沙噢沙里瓦沙里瓦
噢……沙噢沙噢沙里瓦沙里瓦噢……嗬
噢……沙里瓦!噢……沙里瓦,
噢……嗬!……噢…嗬-噢…嗬!…
是谁送你来到我身边,
是那的璀璨的星光星光
是那明媚的蓝天是那明媚的蓝天,
是那明媚的蓝天蓝天
我愿用那充满着纯情的心愿
深深的把你爱怜爱怜
噢……沙噢沙噢沙里瓦沙里瓦
噢……沙噢沙噢沙里瓦沙里瓦
噢……沙噢沙噢沙里瓦沙里瓦
噢……沙噢沙噢沙里瓦沙里瓦!
诗两首
一翦梅·过客
年少气盛忆当年,柳也招展,花也嫣然。
行色匆匆皆不管,春风秋雨,谁恨谁怨。
白发如此叹如今,旧地重游,老柳不绵。
试问此景是哪般,天也感叹。地也感叹。
雨来
七月江夏似火烧,一夜急雨顿转凉。
杨柳竟夸姿色好,虫鸟偏怪夏日长。
邻翁舞刀知鱼美,杯盘满桌闻酒香。
虽然不是酒中客,狂饮两杯又何妨。
立志诗
毛泽东
男儿立志出乡关, 学不成名誓不还;
埋骨何须桑梓地, 人间处处是青山。
从头再来
高胜美
留侯论
留侯论
〔宋〕苏轼
古之所谓豪杰之士者,必有过人之节,人情有所不能忍者。匹夫见辱,拔剑而起,挺身而斗,此不足为勇也。天下有大勇者,卒然临之而不惊
,无故加之而不怒,此其所挟持者甚大,而其志甚远也。
夫子房受书于圯上之老人也,其事甚怪。然亦安知其非秦之世有隐君子者出而试之?观其所以微见其意者,皆圣贤相与警戒之义。世人不察,
以为鬼物,亦已过矣。且其意不在书。当韩之亡,秦之方盛也,以刀锯鼎镬待天下之士,其平居无罪夷灭者,不可胜数;虽有贲、育,无所复
施。夫持法太急者,其锋不可犯,而其末可乘。子房不忍忿忿之心,以匹夫之力,而逞于一击之间。当此之时,子房之不死者,其间不能容发
,盖亦已危矣!千金之子,不死于盗贼。何者?其身之可爱,而盗贼之不足以死也。子房以盖世之材,不为伊尹,太公之谋,而特出于荆轲,
聂政之计,以侥幸于不死,此固圯上之老人所为深惜者也。是故倨傲鲜腆而深折之,彼其能有所忍也,然后可以就大事,故曰:“孺子可教也
。”
楚庄王伐郑,郑伯肉袒牵羊以逆。庄王曰:“其君能下人,必能信用其民矣。”遂舍之。勾践之困于会稽,而归臣妾于吴者,三年而不倦。且
夫有报人之志,而不能下人者,是匹夫之刚也。夫老人者,以为子房才有余,而忧其度量之不足,故深折其少年刚锐之气,使之忍小忿而就大
谋。何则?非有平生之素,卒然相遇于草野之间,而命以仆妾之役,油然而不怪者,此固秦皇帝之所不能惊,而项籍之所不能怒也。
观夫高祖之所以胜,而项籍之所以败者,在能忍与不能忍之间而已矣。项籍惟不能忍,是以百战百胜,而轻用其锋。高祖忍之,养其全锋,而
待其弊,此子房教之也。当淮阴破齐而欲自王,高祖发怒,见于词色。由此观之,犹有刚强不忍之气,非子房其谁全之?
太史公疑子房以为魁梧奇伟,而其状貌乃是妇人女子,不称其志气,而愚以为,此其所以为子房欤!
—一选自《四部丛刊》本《经进东坡文集事略》
张孝祥Java就业培训教程 源码(二)
张孝祥Java就业培训教程 源码(二)
第6章 Java API
《Java就业培训教程》P218源码
程序清单:ReadLine.java
public class ReadLine
{
public static void main(String [] args)
{
byte buf[]=new byte[1024];
String strInfo=null;
int pos=0;
int ch=0;
System.out.println("please enter info, input bye for exit:");
while(true)
{
try
{
ch=System.in.read();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
switch(ch)
{
case '\r':
break;
case '\n':
strInfo= new String(buf,0,pos);
if(strInfo == "bye")
return ;
else
System.out.println(strInfo);
pos=0;
break;
default:
buf[pos++]=(byte)ch;
}
}
}
}
《Java就业培训教程》P221源码
程序清单:TestInteger.java
class TestInteger
{
public static void main(String[] args)
{
int w = Integer.parseInt(args[0]); //第一种方法
int h = new Integer(args[1]).intValue(); //第二种方法
//int h = Integer.valueOf(args[1]).intValue(); //第三种方法
for(int i=0;i
StringBuffer sb=new StringBuffer();
for(int j=0 ;j
sb.append('*');
}
System.out.println(sb.toString());
}
}
}
《Java就业培训教程》P223源码
程序清单:TestVector.java
import java.util.*; //下面用到的Vector类和Enumeration接口都在此包中
public class TestVector
{
public static void main(String [] args)
{
int b=0;
Vector v=new Vector();
System.out.println("Please Enter Number:");
while(true)
{
try
{
b= System.in.read();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
if(b=='\r' || b== '\n')
break;
else
{
int num=b-'0';
v.addElement(new Integer(num));
}
}
int sum=0;
Enumeration e=v.elements();
while(e.hasMoreElements())
{
Integer intObj=(Integer)e.nextElement();
sum += intObj.intValue();
}
System.out.println(sum);
}
}
《Java就业培训教程》P225源码
程序清单:TestCollection.java
import java.util.*; //ArrayList类和Iterator接口都在此包中
public class TestCollection
{
public static void main(String [] args)
{
int b=0;
ArrayList al=new ArrayList();
System.out.println("Please Enter Number:");
while(true)
{
try
{
b= System.in.read();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
if(b=='\r' | b== '\n')
break;
else
{
int num=b-'0';
al.add(new Integer(num));
}
}
int sum=0;
Iterator itr=al.iterator();
while(itr.hasNext())
{
Integer intObj=(Integer)itr.next();
sum += intObj.intValue();
}
System.out.println(sum);
}
}
《Java就业培训教程》P227源码
程序清单:TestSort.java
import java.util.*;
public class TestSort
{
public static void main(String[] args)
{
ArrayList al=new ArrayList();
al.add(new Integer(1));
al.add(new Integer(3));
al.add(new Integer(2));
System.out.println(al.toString()); //排序前
Collections.sort(al);
System.out.println(al.toString()); //排序后
}
}
《Java就业培训教程》P228源码
class MyKey
{
private String name;
private int age;
public MyKey(String name,int age)
{
this.name = name;
this.age = age;
}
public String toString()
{
return new String(name + "," + age);
}
public boolean equals(Object obj)
{
if(obj instanceof MyKey)
{
MyKey objTemp = (MyKey)obj;
if(name.equals(objTemp.name) && age==objTemp.age)
{
return true;
}
else
{
return false;
}
}
//假如obj不是MyKey类的实例对象,它就不可能与当前对象相等了
else
{
return false;
}
}
public int hashCode()
{
return name.hashCode() + age;
}
}
《Java就业培训教程》P229源码
程序清单:HashtableTest.java
import java.util.*;
public class HashtableTest
{
public static void main(String[] args)
{
Hashtable numbers=new Hashtable();
numbers.put(new MyKey("zhangsan",18),new Integer(1));
numbers.put(new MyKey("lisi",15),new Integer(2));
numbers.put(new MyKey("wangwu",20),new Integer(3));
Enumeration e=numbers.keys();
while(e.hasMoreElements())
{
MyKey key=(MyKey)e.nextElement();
System.out.print(key.toString()+"=");
System.out.println(numbers.get(key).toString());
}
}
}
《Java就业培训教程》P231源码
程序清单:PropertiesFile.java
import java.util.*;
import java.io.*;
class PropertiesFile
{
public static void main(String[] args)
{
Properties settings=new Properties();
try
{
settings.load(new FileInputStream("c:\\count.txt"));
}
catch(Exception e)
{
settings.setProperty("Count",new Integer(0).toString());
}
int c=Integer.parseInt(settings.getProperty("Count"))+1;
System.out.println("这是本程序第"+c+"次被使用");
settings.put("Count",new Integer(c).toString());
try
{
settings.store(new FileOutputStream("c:\\count.txt"),
"This Program is used:");
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}
《Java就业培训教程》P233源码
程序清单:TestProperties
import java.util.*;
public class SystemInfo
{
public static void main(String[] args)
{
Properties sp=System.getProperties();
Enumeration e=sp.propertyNames();
while(e.hasMoreElements())
{
String key=(String)e.nextElement();
System.out.println(key+" = "+sp.getProperty(key));
}
}
}
《Java就业培训教程》P234源码
程序清单:TestRuntime.java
public class TestRuntime
{
public static void main(String[] args)
{
Process p=null;
try
{
p=Runtime.getRuntime().exec("notepad.exe TestRuntime.java");
Thread.sleep(5000);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
p.destroy();
}
}
《Java就业培训教程》P236源码
程序清单:TestDateFormat.java
import java.util.*;
import java.text.*;
public class TestDateFormat
{
public static void main(String[] args)
{
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日");
try
{
Date d=sdf1.parse("2003-03-15");
System.out.println(sdf2.format(d));
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}
第7章 IO/输入输出
《Java就业培训教程》P239源码
程序清单:FileTest.java
import java.io.*;
public class FileTest
{
public static void main(String[] args)
{
File f=new File("c:\\1.txt");
if(f.exists())
f.delete();
else
try
{
f.createNewFile();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
System.out.println("File name:"+f.getName());
System.out.println("File path:"+f.getPath());
System.out.println("Abs path:"+f.getAbsolutePath());
System.out.println("Parent:"+f.getParent());
System.out.println(f.exists()?"exists":"does not exist");
System.out.println(f.canWrite()?"is writeable":"is not writeable");
System.out.println(f.canRead()?"is readable":"is not readable");
System.out.println(f.isDirectory()?"is ":"is not"+" a directory");
System.out.println(f.isFile()?"is normal file":"might be a named pipe");
System.out.println(f.isAbsolute()?"is absolute":"is not absolute");
System.out.println("File last modified:"+f.lastModified());
System.out.println("File size:"+f.length()+" Bytes");
}
}
《Java就业培训教程》P242源码
程序清单:RandomFileTest.java
import java.io.*;
public class RandomFileTest
{
public static void main(String [] args) throws Exception
{
Employee e1 = new Employee("zhangsan",23);
Employee e2 = new Employee("Lisi",24);
Employee e3 = new Employee("Wangwu",25);
RandomAccessFile ra=new RandomAccessFile("c:\\1.txt","rw");
ra.write(e1.name.getBytes());
ra.writeInt(e1.age);
ra.write(e2.name.getBytes());
ra.writeInt(e2.age);
ra.write(e3.name.getBytes());
ra.writeInt(e3.age);
ra.close();
RandomAccessFile raf=new RandomAccessFile("c:\\1.txt","r");
int len=8;
raf.skipBytes(12); //跳过第一个员工的信息,其中姓名8字节,年龄4字节
System.out.println("第二个员工信息:");
String str="";
for(int i=0;i
System.out.println("name:"+str);
System.out.println("age:"+raf.readInt());
System.out.println("第一个员工的信息:");
raf.seek(0); //将文件指针移动到文件开始位置
str="";
for(int i=0;i
System.out.println("name:"+str);
System.out.println("age:"+raf.readInt());
System.out.println("第三个员工的信息:");
raf.skipBytes(12); //跳过第二个员工信息
str="";
for(int i=0;i
System.out.println("name:"+str.trim());
System.out.println("age:"+raf.readInt());
raf.close();
}
}
class Employee
{
String name;
int age;
final static int LEN=8;
public Employee(String name,int age)
{
if(name.length()>LEN)
{
name = name.substring(0,8);
}
else
{
while(name.length()
}
this.name=name;
this.age=age;
}
}
《Java就业培训教程》P247源码
程序清单:FileStream.java
import java.io.*;
public class FileStream
{
public static void main(String[] args)
{
File f = new File("hello.txt");
try
{
FileOutputStream out = new FileOutputStream(f);
byte buf[]="www.it315.org".getBytes();
out.write(buf);
out.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
try
{
FileInputStream in = new FileInputStream(f);
byte [] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}
《Java就业培训教程》P250源码
程序清单:PipeStreamTest.java
import java.io.*;
public class PipeStreamTest
{
public static void main(String args[])
{
try
{
Sender t1=new Sender();
Receiver t2=new Receiver();
PipedOutputStream out = t1.getOutputStream();
PipedInputStream in = t2.getInputStream();
out.connect(in);
t1.start();
t2.start();
}
catch(IOException e)
{
System.out.println(e.getMessage());
}
}
}
class Sender extends Thread
{
private PipedOutputStream out=new PipedOutputStream();
public PipedOutputStream getOutputStream()
{
return out;
}
public void run()
{
String s=new String("hello,receiver,how are you!");
try
{
out.write(s.getBytes());
out.close();
}
catch(IOException e)
{
System.out.println(e.getMessage());
}
}
}
class Receiver extends Thread
{
private PipedInputStream in=new PipedInputStream();
public PipedInputStream getInputStream()
{
return in;
}
public void run()
{
String s=null;
byte [] buf = new byte[1024];
try
{
int len =in.read(buf);
s = new String(buf,0,len);
System.out.println(
"the following message comes from sender:\n"+s);
in.close();
}
catch(IOException e)
{
System.out.println(e.getMessage());
}
}
}
《Java就业培训教程》P253源码
程序清单:ByteArrayTest.java
import java.io.*;
public class ByteArrayTest
{
public static void main(String[] args) throws Exception
{
String tmp="abcdefghijklmnopqrstuvwxyz";
byte [] src =tmp.getBytes();//src为转换前的内存块
ByteArrayInputStream input = new ByteArrayInputStream(src);
ByteArrayOutputStream output = new ByteArrayOutputStream();
new ByteArrayTest().transform(input,output);
byte [] result = output.toByteArray();//result为转换后的内存块
System.out.println(new String(result));
}
public void transform(InputStream in,OutputStream out)
{
int c=0;
try
{
while((c=in.read())!=-1)//read在读到流的结尾处返回-1
{
int C = (int)Character.toUpperCase((char)c);
out.write(C);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
《Java就业培训教程》P263源码
程序清单:Serializatioan.java
import java.io.*;
public class serialization
{
public static void main(String args[])
throws IOException,ClassNotFoundException
{
Student stu=new Student(19,"dintdding",50,"huaxue");
FileOutputStream fos=new FileOutputStream("mytext.txt");
ObjectOutputStream os=new ObjectOutputStream(fos);
try
{
os.writeObject(stu);
os.close();
}catch(IOException e)
{
System.out.println(e.getMessage());
}
stu=null;
FileInputStream fi=new FileInputStream("mytext.txt");
ObjectInputStream si=new ObjectInputStream(fi);
try
{
stu=(Student)si.readObject();
si.close();
}catch(IOException e)
{
System.out.println(e.getMessage());
}
System.out.println("ID is:"+stu.id);
System.out.println("name is:"+stu.name);
System.out.println("age is:"+stu.age);
System.out.println("department is:"+stu.department);
}
}
class Student implements Serializable
{
int id;
String name;
int age;
String department;
public Student(int id,String name,int age,String department)
{
this.id=id;
this.name=name;
this.age=age;
this.department=department;
}
}
《Java就业培训教程》P275源码
import java.io.*;
public class CharDecoder
{
public static void main(String [] args) throws Exception
{
System.getProperties().put("file.encoding","iso8859-1");
System.out.println("please enter a Chinese String");
byte [] buf=new byte[1024];
int ch=0;
int pos=0;
String strInfo=null;
while(true)
{
ch =System.in.read();
System.out.println(Integer.toHexString(ch));
switch(ch)
{
case '\r':
break;
case '\n':
strInfo= new String(buf,0,pos);
for(int i=0;i
System.out.println(Integer.toHexString
((int)strInfo.charAt(i)));
}
System.out.println(strInfo);
for(int i=0;i
System.out.println();//想想为什么要这一句
return;
default:
buf[pos++]=(byte)ch;
}
}
}
}
《Java就业培训教程》P282源码
程序清单: TestInOut.java
import java.io.*;
public class TestInOut implements Runnable
{
Process p=null;
public TestInOut()
{
try
{
p=Runtime.getRuntime().exec("java MyTest");
new Thread(this).start();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
public void send()
{
try
{
OutputStream ops=p.getOutputStream();
while(true)
{
ops.write("help\r\n".getBytes());
}
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
public static void main(String [] args)
{
TestInOut tio=new TestInOut ();
tio.send();
}
public void run()
{
try
{
InputStream in = p.getInputStream();
BufferedReader bfr=new BufferedReader(
new InputStreamReader(in));
while(true)
{
String strLine=bfr.readLine();
System.out.println(strLine);
}
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}
class MyTest
{
public static void main(String [] args) throws IOException
{
while(true)
{
System.out.println("hi:"+
new BufferedReader(new InputStreamReader(System.in)).readLine());
}
}
}
第8章 图形用户界面GUI(一)
《Java就业培训教程》P290源码
程序清单:TestFrame.java
import java.awt.*;
import java.awt.event.*;
public class TestFrame
{
public static void main(String [] args)
{
Frame f=new Frame("IT资讯交流网");
f.setSize(300,300);
f.setVisible(true);
f.addWindowListener(new MyWindowListener());
}
}
class MyWindowListener implements WindowListener
{
public void windowClosing(WindowEvent e)
{
e.getWindow().setVisible(false);
((Window)e.getComponent()).dispose();
System.exit(0);
}
public void windowActivated(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowOpened(WindowEvent e){}
}
《Java就业培训教程》P295源码
import java.awt.*;
import java.awt.event.*;
public class TestFrame implements ActionListener
{
Frame f=new Frame("IT资讯交流网");
public static void main(String [] args)
{
TestFrame tf=new TestFrame();
tf.init();
}
public void init()
{
Button btn=new Button("退出");
btn.addActionListener(new TestFrame());
f.add(btn);
f.setSize(300,300);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
f.setVisible(false);
f.dispose();
System.exit(0);
}
}
《Java就业培训教程》P296源码
import java.awt.*;
import java.awt.event.*;
class TestFrame
{
Frame f=new Frame("IT资讯交流网");
public static void main(String [] args)
{
new TestFrame().init();
}
public void init()
{
Button btn=new Button("退出");
btn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
f.setVisible(false);
f.dispose();
System.exit(0);
}
});
f.add(btn);
f.setSize(300,300);
f.setVisible(true);
}
}
《Java就业培训教程》P300源码
程序清单:TestMyButton.java
import java.awt.*;
import java.awt.event.*;
class MyButton extends Button
{
private MyButton friend;
public void setFriend(MyButton friend)
{
this.friend = friend;
}
public MyButton(String name)
{
super(name);
enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
}
protected void processMouseMotionEvent(MouseEvent e)
{
setVisible(false);
friend.setVisible(true);
}
}
public class TestMyButton
{
public static void main(String [] args)
{
MyButton btn1 =new MyButton("你来抓我呀!");
MyButton btn2 =new MyButton("你来抓我呀!");
btn1.setFriend(btn2);
btn2.setFriend(btn1);
btn1.setVisible(false);
Frame f =new Frame("it315");
f.add(btn1, "North");//将btn1增加到f的北部
f.add(btn2, "South");//将btn2增加到f的南部
f.setSize(300,300);
f.setVisible(true);
btn1.setVisible(false);
}
}
《Java就业培训教程》P301源码
程序清单:DrawLine.java
import java.awt.*;
import java.awt.event.*;
public class DrawLine
{
Frame f= new Frame("IT资讯交流网");
public static void main(String [] args)
{
new DrawLine().init();
}
public void init()
{
f.setSize(300,300);
f.setVisible(true);
f.addMouseListener(new MouseAdapter()
{
int orgX;
int orgY;
public void mousePressed(MouseEvent e)
{
orgX=e.getX();
orgY=e.getY();
}
public void mouseReleased(MouseEvent e)
{
f.getGraphics().setColor(Color.red);
//设置绘图颜色为红色
f.getGraphics().drawLine(orgX,orgY,e.getX(),e.getY());
}
});
}
}
《Java就业培训教程》P306源码
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
class MyLine
{
private int x1;
private int y1;
private int x2;
private int y2;
public MyLine(int x1,int y1,int x2,int y2)
{
this.x1=x1;
this.y1=y1;
this.x2=x2;
this.y2=y2;
}
public void drawMe(Graphics g)
{
g.drawLine(x1,y1,x2,y2);
}
}
public class RerawAllLine extends Frame
{
Vector vLines=new Vector();
public static void main(String [] args)
{
RedrawAllLine f=new RedrawAllLine();
f.init();
}
public void paint(Graphics g)
{
g.setColor(Color.red);
Enumeration e=vLines.elements();
while(e.hasMoreElements())
{
MyLine ln=(MyLine)e.nextElement();
ln.drawMe(g);
}
}
public void init()
{
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
((Window)e.getSource()).dispose();
System.exit(0);
}
});
addMouseListener(new MouseAdapter(){
int orgX;
int orgY;
public void mousePressed(MouseEvent e)
{
orgX=e.getX();
orgY=e.getY();
}
public void mouseReleased(MouseEvent e)
{
Graphics g=e.getComponent().getGraphics();
g.setColor(Color.red);
g.drawLine(orgX,orgY,e.getX(),e.getY());
vLines.add(new MyLine(orgX,orgY,e.getX(),e.getY()));
}
});
this.setSize(300,300);
setVisible(true);
}
}
《Java就业培训教程》P311源码
import java.awt.*;
import java.awt.event.*;
public class DrawImage extends Frame
{
Image img=null;
public static void main(String [] args)
{
DrawImage f= new DrawImage();
f.init();
}
public void init()
{
img=this.getToolkit().getImage("c:\\test.gif");
setSize(300,300);
setVisible(true);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void paint(Graphics g)
{
getGraphics().drawImage(img,0,0,this);
}
}
《Java就业培训教程》P312源码
程序清单:DrawLine.java
import java.awt.*;
import java.awt.event.*;
public class DrawLine extends Frame
{
Image oimg=null;
Graphics og=null;
public static void main(String [] args)
{
new DrawLine().init();
}
public void init()
{
setSize(300,300);
setVisible(true);
Dimension d=getSize();
oimg=createImage(d.width,d.height);
og=oimg.getGraphics();
addMouseListener(new MouseAdapter()
{
int orgX;
int orgY;
public void mousePressed(MouseEvent e)
{
orgX=e.getX();
orgY=e.getY();
}
public void mouseReleased(MouseEvent e)
{
Graphics g=getGraphics();
g.setColor(Color.red);//设置绘图颜色为红色
g.setFont(new Font("隶书",Font.ITALIC|Font.BOLD,30));
//设置文本的字体
g.drawString(new String(orgX +"," +orgY),orgX,orgY);
//打印鼠标按下时的坐标文本
g.drawString(new String(e.getX() +"," +e.getY()),
e.getX(),e.getY());//打印鼠标释放时的坐标文本
g.drawLine(orgX,orgY,e.getX(),e.getY());
og.setColor(Color.red);//设置绘图颜色为红色
og.setFont(new Font("隶书",Font.ITALIC|Font.BOLD,30));
//设置文本的字体
og.drawString(new String(orgX +"," +orgY),orgX,orgY);
//打印鼠标按下时的坐标文本
og.drawString(new String(e.getX() +"," +e.getY()),
e.getX(),e.getY());//打印鼠标释放时的坐标文本
og.drawLine(orgX,orgY,e.getX(),e.getY());
}
});
}
public void paint(Graphics g)
{
if(oimg !=null)
g.drawImage(oimg,0,0,this);
}
}
第9章 图形用户界面GUI(二)
《Java就业培训教程》 作者:张孝祥 书中源码
《Java就业培训教程》P316源码
程序清单:TestStopWatch.java
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.SimpleDateFormat;
class StopWatch extends Canvas implements Runnable
{
private long startTime = 0;
private long endTime = 0;
private boolean bStart = false;
public StopWatch()
{
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
setSize(80,30);
}
protected void processMouseEvent(MouseEvent e)
{
if(e.getID() == MouseEvent.MOUSE_PRESSED)
{
/*鼠标按下时,启动计时线程,并让起始时间变量和终止时间变量都等于当前时间*/
bStart = true;
startTime = endTime = System.currentTimeMillis();
repaint();
new Thread(this).start();
}
else if(e.getID() == MouseEvent.MOUSE_RELEASED)
{
/*鼠标释放时,终止计时线程,并重绘窗口表面上的内容*/
bStart = false;
repaint();
}
super.processMouseEvent(e);
}
public void paint(Graphics g)
{
/*时间值的小时、分钟、秒、都用两位数字显示,
不足两位的部分前面加0,即"HH:mm:ss"这种的格式。*/
SimpleDateFormat sdf= new SimpleDateFormat("HH:mm:ss");
/*最刚开始编写这个程序的时候,直接使用elapsedTime.setTime(endTime-startTime);
语句设置elapsedTime时间对象的数字值,从运行结果上发现,即使endTime-startTime等于0,
但elapsedTime显示的时间却不是"00:00:00",而是"08:00:00"。我们曾经讲过,时间在计算机
内存中也是用一个长整数表示的,在这里,我们又发现,即使这个内存中的长整数等于0时,由于
Date类考虑了本地时区问题,所以,其表示的时间就不一定为"零点:零分:零秒"。这里不需要
考虑时区问题,只是借助Date类来帮我们生成"HH:mm:ss"这种时间表示格式。明白这个问题后,
我们就不难想像出,可以先求出显示时间为"00:00:00"的时间对象在内存中对应的那个长整数,
然后在这个基础上加上计时器所记下的时间值,最后就可以显示出我们想要的结果。*/
Date elapsedTime =null;
try
{
elapsedTime= sdf.parse("00:00:00");
}catch(Exception e){}
elapsedTime.setTime(endTime - startTime +
elapsedTime.getTime());
String display = sdf.format(elapsedTime);
g.drawRect(0,0,78,28);
g.fill3DRect(2,2,75,25,true);
g.setColor(Color.WHITE);
g.drawString(display,10,20);
}
public void run()
{
while(bStart)
{
try
{
Thread.sleep(500);
}catch(Exception e){e.printStackTrace();}
endTime = System.currentTimeMillis();
repaint();
}
}
}
public class TestStopWatch
{
public static void main(String [] args)
{
Frame f =new Frame("StopWatch");
f.add(new StopWatch());
f.setSize(200,200);
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
《Java就业培训教程》P319源码
程序清单:TestCheckbox.java
import java.awt.*;
import java.awt.event.*;
public class TestCheckbox
{
Checkbox cb1=new Checkbox("你喜欢我吗?",true);
CheckboxGroup cbg=new CheckboxGroup();
Checkbox cb2=new Checkbox("喜欢",cbg,true);
Checkbox cb3=new Checkbox("不喜欢",cbg,false);
public void init()
{
Frame f=new Frame("TestCheckBox");
//创建FlowLayout布局管理器,关于布局管理器,本章后面有专门的讲解,
看不明白//的读者暂时可以不去下面两句代码的作用。
FlowLayout fl=new FlowLayout();
f.setLayout(fl);
f.add(cb1);
f.add(cb2);
f.add(cb3);
cb1.addItemListener(new CbItemListener());
cb2.addItemListener(new CbItemListener());
cb3.addItemListener(new CbItemListener());
f.setBounds(0,0,300,100);
f.setVisible(true);
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
class CbItemListener implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
Checkbox cb = (Checkbox)e.getItemSelectable();
if(cb.getLabel().equals("你喜欢我吗?"))
{
if(cb.getState() == true)
System.out.println("我很高兴");
else
System.out.println("我很伤心");
}
/*else if(cb.getLabel().equals("喜欢"))
{
if(e.getStateChange() == ItemEvent.SELECTED)
System.out.println("我也喜欢你");
else
System.out.println("我也不喜欢你");
}*/
else
{
Checkbox cbx =cbg.getSelectedCheckbox();
if(cbx != null)
System.out.println(cbx.getLabel());
}
}
}
public static void main(String[] args)
{
new TestCheckbox().init();
}
}
《Java就业培训教程》P321源码
程序清单:TestChoice.java
import java.awt.*;
import java.awt.event.*;
public class TestChoice
{
Choice ch=new Choice(); //创建Choice对象
TestChoice()
{
ch.add("choice1"); //用add方法向列表里加入选项
ch.add("choice2"); //用add方法向列表里加入选项
ch.add("choice3"); //用add方法向列表里加入选项
FlowLayout fl=new FlowLayout();
Frame f=new Frame("TestChoice");
f.setLayout(fl);
f.add(ch); //把列表加入到窗口
f.setBounds(0,0,200,100);
f.setVisible(true);
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
new TestChoice();
}
}
《Java就业培训教程》P323源码
程序清单:TestMenuBar.java
import java.awt.*;
import java.awt.event.*;
public class TestMenuBar
{
MenuBar menubar=new MenuBar(); //创建菜单条对象
Menu fileM=new Menu("File"); //创建各菜单
Menu editM=new Menu("Edit"); //创建各菜单
Menu toolsM=new Menu("Tools"); //创建各菜单
Menu helpM=new Menu("Help"); //创建各菜单
MenuItem fileMI1=new MenuItem("New"); //创建各菜单项
MenuItem fileMI2=new MenuItem("Open"); //创建各菜单项
MenuItem fileMI3=new MenuItem("Save"); //创建各菜单项
CheckboxMenuItem fileMI5=new CheckboxMenuItem("Quit",true);
//创建各菜单项
Menu filePrint = new Menu("print");//创建子菜单
MenuItem printM1 = new MenuItem("preview");
MenuItem printM2 = new MenuItem("setting");
TestMenuBar()
{
FlowLayout fl=new FlowLayout();
Frame f=new Frame("TestMenuBar");
f.setLayout(fl);
menubar.add(fileM); //将菜单加入菜单条
menubar.add(editM);
menubar.add(toolsM);
menubar.add(helpM);
fileM.add(fileMI1); //将菜单项加入file菜单中
fileM.add(fileMI2);
fileM.add(fileMI3);
filePrint.add(printM1);//将菜单项加入print菜单中
filePrint.add(printM2);
fileM.add(filePrint);
//将print菜单作为一个菜单项加入file菜单中
fileM.addSeparator(); //将一条分割线加入菜单中
fileM.add(fileMI5); //将菜单项加入菜单中
f.setMenuBar(menubar); //把整个菜单系统显示在窗口中
f.setBounds(0,0,250,200);
f.setVisible(true);
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
new TestMenuBar();
}
}
《Java就业培训教程》P327源码
程序清单:TestDialog.java
import java.awt.*;
import java.awt.event.*;
public class TestDialog
{
TextField tf = new TextField(10);
Button b1=new Button("模态显示");
Button b2=new Button("非模态显示");
Frame f=new Frame("TestDialog");
Button b3=new Button("确定");
Dialog dlg = new Dialog(f, "Dialog Title", true);
FlowLayout fl=new FlowLayout();
TestDialog()
{
f.setLayout(fl);
f.add(tf);
f.add(b1);
f.add(b2);
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
dlg.setModal(true);
dlg.setVisible(true);
tf.setText("www.it315.org");
}
});
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
dlg.setModal(false);
dlg.setVisible(true);
tf.setText("www.it315.org");
}
});
f.setBounds(0,0,400,200);
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
dlg.setLayout(fl);
dlg.add(b3);
b3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
dlg.dispose();
}
});
dlg.setBounds(0,0,200,150);
}
public static void main(String[] args)
{
new TestDialog();
}
}
《Java就业培训教程》P330源码
程序清单:TestPane.java
import java.awt.*;
import java.awt.event.*;
public class TestPane
{
TestPane()
{
Frame f=new Frame("TestDialog");
ScrollPane sp = new ScrollPane();
TextArea ta = new TextArea("",10,50,TextArea.SCROLLBARS_NONE);
sp.add(ta);
f.add(sp);
f.setSize(200,200);
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
new TestPane();
}
}
《Java就业培训教程》P336源码
程序清单:TestCardLayout.java
import java.awt.*;
import java.awt.event.*;
public class TestCardLayout
{
CardLayout cl = new CardLayout();
Panel plCenter = new Panel();
public static void main(String [] args)
{
new TestCardLayout().init();
}
public void init()
{
Frame f=new Frame("布局管理器");
Panel plWest = new Panel();
f.add(plWest,"West");
f.add(plCenter);
plWest.setLayout(new GridLayout(3,1));
Button btnPrev = new Button("prev");
plWest.add(btnPrev);
Button btnNext = new Button("next");
plWest.add(btnNext);
Button btnThree = new Button("three");
plWest.add(btnThree);
plCenter.setLayout(cl);
plCenter.add(new Button("One"),"1");
plCenter.add(new Button("two"),"2");
plCenter.add(new Button("three"),"3");
plCenter.add(new Button("four"),"4");
plCenter.add(new Button("five"),"5");
class MyActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("prev"))
cl.previous(plCenter);
else if(e.getActionCommand().equals("next"))
cl.next(plCenter);
else if(e.getActionCommand().equals("three"))
cl.show(plCenter,"3");
}
}
MyActionListener ma = new MyActionListener();
btnPrev.addActionListener(ma);
btnNext.addActionListener(ma);
btnThree.addActionListener(ma);
f.setSize(300,300);
f.setVisible(true);
}
}
《Java就业培训教程》P343源码
程序清单:Calculator.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator implements ActionListener
{
JFrame jf = new JFrame("Calculator");
JTextField tf = new JTextField();
public void init()
{
Container c = jf.getContentPane();
tf.setHorizontalAlignment(JTextField.RIGHT);
c.add(tf,"North");
JPanel pnl=new JPanel();
c.add(pnl,"Center");
pnl.setLayout(new GridLayout(4,4));
JButton b=new JButton("1");
b.addActionListener(this);
pnl.add(b);
b=new JButton("2");
b.addActionListener(this);
pnl.add(b);
b=new JButton("3");
b.addActionListener(this);
pnl.add(b);
b=new JButton("+");
b.addActionListener(this);
pnl.add(b);
b=new JButton("4");
b.addActionListener(this);
pnl.add(b);
b=new JButton("5");
b.addActionListener(this);
pnl.add(b);
b=new JButton("6");
b.addActionListener(this);
pnl.add(b);
b=new JButton("-");
b.addActionListener(this);
pnl.add(b);
b=new JButton("7");
b.addActionListener(this);
pnl.add(b);
b=new JButton("8");
b.addActionListener(this);
pnl.add(b);
b=new JButton("9");
b.addActionListener(this);
pnl.add(b);
b=new JButton("*");
b.addActionListener(this);
pnl.add(b);
b=new JButton("0");
b.addActionListener(this);
pnl.add(b);
b=new JButton(".");
b.addActionListener(this);
pnl.add(b);
b=new JButton("=");
b.addActionListener(this);
pnl.add(b);
b=new JButton("\\");
b.addActionListener(this);
pnl.add(b);
jf.setSize(200,300);
jf.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
tf.setText(tf.getText()+e.getActionCommand());
}
public static void main(String [] args)
{
new Calculator().init();
}
}
第10章 Applet
《Java就业培训教程》P347源码
《Java就业培训教程》P354源码
import java.applet.*;
import java.awt.*;
import java.net.*;
public class MyApplet extends Applet implements Runnable
{
Image [] imgs=new Image[10];
int index=0;
public void init()
{
try{
for(int i=0;i<10;i++)
{
imgs[i]=getImage(new URL(getCodeBase(),"img\\T" +
(i+1) +".gif"));
/*imgs[i]=getToolkit().getImage(new URL(getCodeBase(),
"img\\T" +(i+1) +".gif"));*/
}
new Thread(this).start();
}
catch(Exception e){e.printStackTrace();}
}
public void paint(Graphics g)
{
g.drawImage(imgs[index],0,0,this);
/*下面设置的字体必须是你的计算机中存在的字符,打开记事本程序的字体设置对话框,
从其中可选的字体中复制一个到这里就行了。*/
g.setFont(new Font("隶书",Font.ITALIC|Font.BOLD,30));
index=(index+1)%10;
g.drawString("" + index,0,50);
}
public void run()
{
while(true)
{
repaint();
try
{
Thread.sleep(100);
}catch(Exception e){}
}
}
}
《Java就业培训教程》P364源码
import java.applet.*;
import java.awt.*;
public class Parameters extends Applet
{
private String toDisplay;
private int speed;
public void init()
{
String pv;
pv = getParameter("speed");
if (pv == null)
{
speed = 10;
}
else
{
speed = Integer.parseInt (pv);
}
toDisplay = "Speed Parameter: " + speed;
}
public void paint(Graphics g)
{
g.drawString(toDisplay, 25, 25);
}
}
《Java就业培训教程》P367源码
程序清单: MyApplet.java
import java.applet.*;
import java.awt.*;
public class MyApplet extends Applet
{
static int count=0;
static int count1=0;
public MyApplet()
{
count1++;
}
public void init()
{
count++;
}
public void paint(Graphics g)
{
g.drawString(count +"," +count1,50,60);
}
}
第11章 网络编程
《Java就业培训教程》P374的Java原代码
发送程序:UdpSend.java
import java.net.*;
public class UdpSend
{
public static void main(String [] args) throws Exception
{
DatagramSocket ds=new DatagramSocket();
String str="hello world";
DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length(),
InetAddress.getByName("192.168.0.213"),3000);
ds.send(dp);
ds.close();
}
}
接收程序:UdpRecv.java
import java.net.*;
public class UdpRecv
{
public static void main(String [] args) throws Exception
{
DatagramSocket ds=new DatagramSocket(3000);
byte [] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,1024);
ds.receive(dp);
String strRecv=new String(dp.getData(),0,dp.getLength()) +
" from " + dp.getAddress().getHostAddress()+":"+dp.getPort();
System.out.println(strRecv);
ds.close();
}
}
《Java就业培训教程》P378的Java原代码
import java.awt.*;
import java.awt.event.*;
import java.net.*;
public class Chat
{
Frame f=new Frame("我的聊天室");
TextField tfIP=new TextField(15);
List lst=new List(6);
DatagramSocket ds;
/*由于DatagramSocket的构造函数声明可能抛出异常,我们的程序需要用try…catch语句
进行异常捕获处理,所以不能直接在这里调用DatagramSocket的构造函数对ds进行初始化,
我们需要将ds的初始化放在Chat类的构造函数中去完成。*/
public Chat()
{
try
{
ds=new DatagramSocket(3000);
}catch(Exception ex){ex.printStackTrace();}
}
public static void main(String [] args)
{
Chat chat=new Chat();
chat.init();
}
public void init()
{
f.setSize(300,300);
f.add(lst);
Panel p=new Panel();
p.setLayout(new BorderLayout());
p.add("West",tfIP);
TextField tfData=new TextField(20);
p.add("East",tfData);
f.add("South",p);
f.setVisible(true);
f.setResizable(false);//限制用户改变窗口的大小
//增加关闭窗口的事件处理代码
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
ds.close();//程序退出时,关闭Socket,释放相关资源
f.setVisible(false);
f.dispose();
System.exit(0);
}
});
//增加在消息文本框中按下回车键的事件处理代码
tfData.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//取出文本框中的消息字符串,并将其转换成字节数组
byte[] buf;
buf = e.getActionCommand().getBytes();
try
{
DatagramPacket dp= new DatagramPacket(buf,buf.length,
InetAddress.getByName(tfIP.getText()),3000);
ds.send(dp);
}catch(Exception ex){ex.printStackTrace();}
/*上面的Exception的引用变量名不能为e,而是改写成了ex,因为e已经在
actionPerformed方法中作为形式参数变量名被定义过了。*/
((TextField)e.getSource()).setText("");
}
});
}
}
《Java就业培训教程》P380的Java原代码
import java.awt.*;
import java.awt.event.*;
import java.net.*;
public class Chat
{
Frame f=new Frame("我的聊天室");
TextField tfIP=new TextField(15);
List lst=new List(6);
DatagramSocket ds;。
public Chat()
{
try
{
ds=new DatagramSocket(3000);
}catch(Exception ex){ex.printStackTrace();}
new Thread(new Runnable()
{
public void run()
{
byte buf[]=new byte[1024];
DatagramPacket dp= new DatagramPacket(buf,1024);
while(true)
{
try
{
ds.receive(dp);
lst.add(new String(buf,0,dp.getLength())+
":from"+dp.getAddress().getHostAddress(),0);
}catch(Exception e){e.printStackTrace();}
}
}
}).start();
}
……
}
《Java就业培训教程》P385的Java原代码
import java.net.*;
import java.io.*;
public class TcpServer
{
public static void main(String [] args)
{
try
{
ServerSocket ss=new ServerSocket(8001);
Socket s=ss.accept();
InputStream ips=s.getInputStream();
OutputStream ops=s.getOutputStream();
ops.write("welcome to www.it315.org!".getBytes());
byte [] buf = new byte[1024];
int len = ips.read(buf);
System.out.println(new String(buf,0,len));
ips.close();
ops.close();
s.close();
ss.close();
}catch(Exception e){e.printStackTrace();}
}
}
《Java就业培训教程》P388的Java原代码
import java.net.*;
import java.io.*;
class Servicer implements Runnable
{
Socket s;
public Servicer(Socket s)
{
this.s = s;
}
public void run()
{
try
{
InputStream ips=s.getInputStream();
OutputStream ops=s.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(ips));
DataOutputStream dos = new DataOutputStream(ops);
while(true)
{
String strWord = br.readLine();
//System.out.println(strWord +":" + strWord.length());
if(strWord. equalsIgnoreCase("quit"))
break;
String strEcho = (new StringBuffer(strWord).reverse()).toString();
//dos.writeBytes(strWord +"---->"+ strEcho +"\r\n");
dos.writeBytes(strWord + "---->"+ strEcho +
System.getProperty("line.separator")); }
br.close();
//关闭包装类,会自动关闭包装类中所包装的底层类。所以不用调用ips.close()
dos.close();
s.close();
}catch(Exception e){e.printStackTrace();}
}
}
class TcpServer
{
public static void main(String [] args)
{
try
{
ServerSocket ss=new ServerSocket(8001);
while(true)
{
Socket s=ss.accept();
new Thread(new Servicer(s)).start();
}
//ss.close();
}catch(Exception e){e.printStackTrace();}
}
}
《Java就业培训教程》P391的Java原代码
import java.net.*;
import java.io.*;
public class TcpClient
{
public static void main(String [] args)
{
try
{
//Socket s=new Socket(InetAddress.getByName("192.168.0.213"),8001);
if(args.length < 2)
{
System.out.println("Usage:java TcpClient ServerIP ServerPort");
return;
}
Socket s=new Socket(
InetAddress.getByName(args[0]),Integer.parseInt(args[1]));
InputStream ips=s.getInputStream();
OutputStream ops=s.getOutputStream();
BufferedReader brKey =
new BufferedReader(new InputStreamReader(System.in));
DataOutputStream dos = new DataOutputStream(ops);
BufferedReader brNet = new BufferedReader(new InputStreamReader(ips));
while(true)
{
String strWord = brKey.readLine();
dos.writeBytes(strWord + System.getProperty("line.separator"));
if(strWord.equalsIgnoreCase("quit"))
break;
else
System.out.println(brNet.readLine());
}
dos.close();
brNet.close();
brKey.close();
s.close();
}catch(Exception e){e.printStackTrace();}
}
}
张孝祥Java就业培训教程 源码(一)
张孝祥Java就业培训教程 源码(一)
《Java就业培训教程》P34源码
程序清单:Promote.java
class Promote
{
public static void main(String args[])
{
byte b = 50;
char c = 'a';
short s = 1024;
int i = 50000;
float f = 5.67f;
double d = .1234;
double result = (f * b) + (i / c) - (d * s);
System.out.println((f * b) + " + " + (i / c) + " - " + (d * s));
System.out.println("result = " + result);
}
}
《Java就业培训教程》P35源码
程序清单:TestScope.java
public class TestScope
{
public static void main(String[] args)
{
int x = 12;
{
int q = 96; // x和q都可用
System.out.println("x is "+x);
System.out.println("q is "+q);
}
q = x; &nbs