java个人网站_Java

《Java语法及网络应用设计》

2005年第五次印刷

该书由清华大学出版社出版,各地书店有售,在网上书店购买可享受特惠:

China-Pub

新风雨网络书城 cnforyou

大洋书城,

6688,

当当网上书店

以特惠价购买 ,也可参阅清华大学出版社了解详情。 有关该书学习过程中的问题讨论以及有关本书的意见和建议请发E-mail至 xuyingxiao ## 126.com,(##应替换为@) 本书的源代码http://homepage.fudan.edu.cn/xuyingxiao/files/2013/12/jvnetpro.zip 。

PPT下载  http://homepage.fudan.edu.cn/xuyingxiao/files/2013/12/PPT.zip

由于大量的垃圾邮件,书中原给出的E-mail已经废弃不用,与我联系请用新的E-mail: xuyingxiao ## 126.com (其中##应该替换为@)

(由于工作太忙,我不再对询问具体技术问题的邮件作解答,但仍旧欢迎对书的各种建议和意见)

勘误和改进:

1.

P.82

原文:静态初始化...其作用是第一次创建对象会执行

应该是:静态初始化...其作用是第一次加载该类时会执行

感谢姜国海的指正

2.

对第15章的补充:

读者xw指出例子无法正常运行,经作者检查,例子中使用的服务器www.edu.cn出于

安全考虑现在已修改了默认的Community:public,鉴于现在可试验的服务器越来越

少,现推荐读者使用Windows 98安装SNMP Agent软件充当被网管的对象。这样,只

要使用127.0.0.1的地址就可以在同一台计算机上练习,也可在另一台计算机上输入

安装了SNMP Agent软件的计算机的IP地址来练习。

Windows 98下的SNMP Agent软件可从

http://www.wtcs.org/snmp4tpc/FILES/SNMP498/SNMP498.zip

下载,解压缩后在控制面板/网络/添加/服务/从磁盘安装,选择解压缩后的目录即可。

3.

对第12.6.1小节“编写最简单的发送E-mail的程序”的补充:

读者y指出运行提示“errorjava.net.connecttionException:connection timed out:connect

”,这是因为书中使用的E-mail服务器现在已经限制了公共网络中用户的邮件转发,可换用其他

免费邮箱,如可访问mail.2911.net,注册一个免费邮箱,然后SMTP服务器地址使用mail.2911.net。

(12.6.2小节的程序也可以使用mail.2911.net作为POP3服务器)。

4.

对10.2.6小节对话框的补充:

读者wang自己编了一个程序,鼠标点击一个按钮,执行dl.show( )显示对话框,为什么对话框中按

钮没有反应?将true改成false是正常的

dl=new Dialog(this, "真的要修改吗?", true); 。

回答:

根据Dialog类关于show()的API文档:

If the dialog is modal and is not already visible, this call will not return until the

dialog is hidden by calling hide or dispose. It is permissible to show modal dialogs from

the event dispatching thread because the toolkit will ensure that another event pump runs

while the one which invoked this method is blocked.

dl=new Dialog(this, "真的要修改吗?", true); 第三个参数为true时创建的dl是modal的,因此后面

public void focusLost(FocusEvent e) {} 执行dl.show()或setVisible(true)时线程将挂在那儿。因

此后面鼠标点击按钮时就无法相应了。

书中的例子执行setVisible(true)时是在main( )中的,由于执行main()的线程和处理鼠标的线程是两

个不同的线程,因此虽然main()线程挂在那儿,但如果加上鼠标事件处理仍旧没问题。

不过很多情况下需要像你的程序这样在处理鼠标事件时执行dl.show(),这时可创建一个新的线程来完

成这个工作,这样这个新线程挂在这儿,原有线程就不受影响。如可以定义这样一个类:

class tt extends Thread{

Dialog dl;

public tt(Dialog dl){

this.dl=dl;

}

public void run(){

dl.show();

System.out.println("Show finished");

}

}

将你的程序中 dl.show(); 替换为:

new tt(dl).start();

就行了。你会发现dl.show();执行时挂在那儿,"Show finished"刚开始没有打印出来,当点了其中的

按钮,执行了dl.dispose()后,"Show finished"才打印出来

5. Zhou

Subject: 关于《Java语法及网络应用设计》的一个问题

> 书P126

> 中的例9-24和例9-25

> 我如果把

> }else{ //非数字,则返回空格

> return(' ');

> }

> 改为

> }else{

> return('*');

> }

> 那么当我java Keyread2时,在我输入数字和回车后

> 程序可以吧数字识别出来,但是没有把回车识别出来。

> 每次回车 都会被当作*输出。

>

> 为什么?

> if (Character.isDigit((char)b)||(char)b=='\n'){ 中的判断到底起没起作用。

回答:

if (Character.isDigit((char)b)||(char)b=='\n'){ 中的判断当然起作用啦。

其实按一次回车会向程序中输入两个char,你加一些打印语句就可以看得到,一个char的整数值是13('\r'),另一个是10('\n')

9-24中考虑了数字和'\n',已经被识别出来了,你看到的多了一个*是'\r'显示出来的。原来的程序写成回车输出空格,把这个问题给避开了。如果想考虑得这么细的话,只要把

else if (Character.isDigit((char)b)||(char)b=='\n'){

改成

else if( Character.isDigit( (char)b) || (char)b =='\n'|| (char)b =='\r' ){

就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值